i386: Move from explicit ADDR32/DATA32 prefixes to instruction suffixes.
Is more portable. Binary is unchanged (verified).
This commit is contained in:
parent
065ad910f1
commit
f571dc1af8
4 changed files with 9 additions and 9 deletions
|
@ -95,7 +95,7 @@ LOCAL (codestart):
|
||||||
int $0x13
|
int $0x13
|
||||||
|
|
||||||
/* transition to protected mode */
|
/* transition to protected mode */
|
||||||
DATA32 call real_to_prot
|
calll real_to_prot
|
||||||
|
|
||||||
/* The ".code32" directive takes GAS out of 16-bit mode. */
|
/* The ".code32" directive takes GAS out of 16-bit mode. */
|
||||||
.code32
|
.code32
|
||||||
|
@ -149,7 +149,7 @@ gate_a20_try_bios:
|
||||||
movw $0x2401, %ax
|
movw $0x2401, %ax
|
||||||
int $0x15
|
int $0x15
|
||||||
|
|
||||||
DATA32 call real_to_prot
|
calll real_to_prot
|
||||||
.code32
|
.code32
|
||||||
|
|
||||||
popl %ebp
|
popl %ebp
|
||||||
|
|
|
@ -48,7 +48,7 @@ VARIABLE(grub_core_entry_addr)
|
||||||
/* Transition to protected mode. We use pushl to force generation
|
/* Transition to protected mode. We use pushl to force generation
|
||||||
of a flat return address. */
|
of a flat return address. */
|
||||||
pushl $1f
|
pushl $1f
|
||||||
DATA32 jmp real_to_prot
|
jmpl real_to_prot
|
||||||
.code32
|
.code32
|
||||||
/* Ensure A20 is enabled. We're in qemu, so control port A works
|
/* Ensure A20 is enabled. We're in qemu, so control port A works
|
||||||
and there is no need to wait since there is no real logic, it's
|
and there is no need to wait since there is no real logic, it's
|
||||||
|
|
|
@ -135,7 +135,7 @@ LOCAL(prot_to_real_addr):
|
||||||
|
|
||||||
.macro REAL_TO_PROT
|
.macro REAL_TO_PROT
|
||||||
movl LOCAL(real_to_prot_addr), %eax
|
movl LOCAL(real_to_prot_addr), %eax
|
||||||
DATA32 call *%ax
|
calll *%eax
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -54,7 +54,7 @@ protstack:
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro REAL_TO_PROT
|
.macro REAL_TO_PROT
|
||||||
DATA32 call real_to_prot
|
calll real_to_prot
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -137,7 +137,7 @@ real_to_prot:
|
||||||
/* load the GDT register */
|
/* load the GDT register */
|
||||||
xorw %ax, %ax
|
xorw %ax, %ax
|
||||||
movw %ax, %ds
|
movw %ax, %ds
|
||||||
DATA32 ADDR32 lgdt gdtdesc
|
ADDR32 lgdtl gdtdesc
|
||||||
|
|
||||||
/* turn on protected mode */
|
/* turn on protected mode */
|
||||||
movl %cr0, %eax
|
movl %cr0, %eax
|
||||||
|
@ -145,7 +145,7 @@ real_to_prot:
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
|
|
||||||
/* jump to relocation, flush prefetch queue, and reload %cs */
|
/* jump to relocation, flush prefetch queue, and reload %cs */
|
||||||
DATA32 ljmp $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
|
ljmpl $GRUB_MEMORY_MACHINE_PROT_MODE_CSEG, $protcseg
|
||||||
|
|
||||||
.code32
|
.code32
|
||||||
protcseg:
|
protcseg:
|
||||||
|
@ -237,7 +237,7 @@ tmpcseg:
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
|
|
||||||
/* flush prefetch queue, reload %cs */
|
/* flush prefetch queue, reload %cs */
|
||||||
DATA32 ljmp $0, $realcseg
|
ljmpl $0, $realcseg
|
||||||
|
|
||||||
realcseg:
|
realcseg:
|
||||||
/* we are in real mode now
|
/* we are in real mode now
|
||||||
|
@ -258,6 +258,6 @@ realcseg:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* return on new stack! */
|
/* return on new stack! */
|
||||||
DATA32 ret
|
retl
|
||||||
|
|
||||||
.code32
|
.code32
|
||||||
|
|
Loading…
Add table
Reference in a new issue