Re: [pm] Strange cleanups in -test8 kernel/acpi/wakeup.S

From: Mika Penttilä
Date: Mon Oct 20 2003 - 15:28:13 EST




Patrick Mochel wrote:

Some more changes landed in -test8. I have not seen them
before. Patrick, please, if you change something, can you post patch
somewhere for review before merging with Linus?



Pavel, I wrote the code in the first place, before you littered your
'debug hacks' throughout it. I have merely been trying to simplify it for debugging on other processors that are known not to work. While I understand your generic plea for review, I fail to see how it would help with this assembly..



bkcvs info is:
BitKeeper to RCS/CVS export
----------------------------
revision 1.5
date: 2003/10/08 22:55:45; author: mochel; state: Exp; lines: +37
-89
[power] Clean up ACPI STR assembly.



It might help if you read the full changeset comments.



diff -Nru a/arch/i386/kernel/acpi/wakeup.S
b/arch/i386/kernel/acpi/wakeup.S
--- a/arch/i386/kernel/acpi/wakeup.S Fri Oct 17 14:43:50 2003
+++ b/arch/i386/kernel/acpi/wakeup.S Fri Oct 17 14:43:50 2003
@@ -172,14 +172,13 @@
.org 0x1000

wakeup_pmode_return:
- movl $__KERNEL_DS, %eax
- movl %eax, %ds
- movw $0x0e00 + 'u', %ds:(0xb8016)
-
- # restore other segment registers
- xorl %eax, %eax
+ movw $__KERNEL_DS, %ax
+ movw %ax, %ss
+ movw %ax, %ds
+ movw %ax, %es
movw %ax, %fs
movw %ax, %gs
+ movw $0x0e00 + 'u', 0xb8016

# reload the gdt, as we need the full 32 bit address
lgdt saved_gdt
~~~~~~~~~~~~~~~~~

Notice lgdt here. You have moved setup of segment registers before
loading gdt. This is actually okay, if you can be sure that all such
registers are in gdt (and not in ldt, for example).



All segments are in the GDT, as we use the same GDT in real mode as we do in protected mode. However, you must reload the GDT in protected mode because the GDTR is only 24 bits in real mode, but 32 in protected mode.



To be exact, GDTR is always 48 bits in x86. Reloading it twice seems pretty pointless.

--Mika




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/