mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-21 14:59:34 +00:00
support both of binutils 2.9.1.0.x and 2.9.5.0.x
This commit is contained in:
1 parent
0623b3f394
commit
ce03b57275
6 files changed
+156
-55
No files matched your search
+39
-39
@@ -95,13 +95,13 @@ codestart:
|
||||
sti /* we're safe again */
|
||||
|
||||
/* save boot drive reference */
|
||||
addr32 movb %dl, EXT_C(boot_drive)
|
||||
ADDR32 movb %dl, EXT_C(boot_drive)
|
||||
|
||||
/* reset disk system (%ah = 0) */
|
||||
int $0x13
|
||||
|
||||
/* transition to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
|
||||
/* The ".code32" directive takes GAS out of 16-bit mode. */
|
||||
.code32
|
||||
@@ -170,7 +170,7 @@ ENTRY(chain_stage1)
|
||||
call EXT_C(prot_to_real)
|
||||
.code16
|
||||
|
||||
data32 addr32 ljmp (offset)
|
||||
DATA32 ADDR32 ljmp (offset)
|
||||
.code32
|
||||
#endif /* STAGE1_5 */
|
||||
|
||||
@@ -209,7 +209,7 @@ ENTRY(chain_stage2)
|
||||
call EXT_C(prot_to_real)
|
||||
.code16
|
||||
|
||||
data32 addr32 ljmp (offset)
|
||||
DATA32 ADDR32 ljmp (offset)
|
||||
|
||||
.code32
|
||||
|
||||
@@ -225,7 +225,7 @@ ENTRY(real_to_prot)
|
||||
cli
|
||||
|
||||
/* load the GDT register */
|
||||
data32 addr32 lgdt gdtdesc
|
||||
DATA32 ADDR32 lgdt gdtdesc
|
||||
|
||||
/* turn on protected mode */
|
||||
movl %cr0, %eax
|
||||
@@ -233,7 +233,7 @@ ENTRY(real_to_prot)
|
||||
movl %eax, %cr0
|
||||
|
||||
/* jump to relocation, flush prefetch queue, and reload %cs */
|
||||
data32 ljmp $PROT_MODE_CSEG, $protcseg
|
||||
DATA32 ljmp $PROT_MODE_CSEG, $protcseg
|
||||
|
||||
/*
|
||||
* The ".code32" directive only works in GAS, the GNU assembler!
|
||||
@@ -307,7 +307,7 @@ tmpcseg:
|
||||
movl %eax, %cr0
|
||||
|
||||
/* flush prefetch queue, reload %cs */
|
||||
data32 ljmp $0, $realcseg
|
||||
DATA32 ljmp $0, $realcseg
|
||||
|
||||
realcseg:
|
||||
/* we are in real mode now
|
||||
@@ -326,7 +326,7 @@ realcseg:
|
||||
sti
|
||||
|
||||
/* return on new stack! */
|
||||
data32 ret
|
||||
DATA32 ret
|
||||
|
||||
.code32
|
||||
|
||||
@@ -370,7 +370,7 @@ ENTRY(biosdisk_int13_extensions)
|
||||
xorw %ax, %ax
|
||||
movw %ax, %ds
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %dl, %al /* return value in %eax */
|
||||
@@ -442,7 +442,7 @@ ENTRY(biosdisk_standard)
|
||||
jmp 1b /* retry */
|
||||
2:
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %bl, %al /* return value in %eax */
|
||||
@@ -495,7 +495,7 @@ ENTRY(check_int13_extensions)
|
||||
xorb %bl, %bl
|
||||
2:
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %bl, %al /* return value in %eax */
|
||||
@@ -543,7 +543,7 @@ ENTRY(get_diskinfo_int13_extensions)
|
||||
xorw %ax, %ax
|
||||
movw %ax, %ds
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %bl, %al /* return value in %eax */
|
||||
@@ -592,7 +592,7 @@ ENTRY(get_diskinfo_standard)
|
||||
1:
|
||||
movb %ah, %bl /* save return value in %bl */
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
/* restore %ebp */
|
||||
@@ -687,7 +687,7 @@ probe_values:
|
||||
|
||||
2:
|
||||
/* back to protected mode */
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
/* restore %ebp */
|
||||
@@ -758,7 +758,7 @@ pc_notnewline:
|
||||
movw $1, %bx
|
||||
int $0x10
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
pop %ebx
|
||||
@@ -796,10 +796,10 @@ ENTRY(get_memsize)
|
||||
.code16
|
||||
|
||||
cmpb $0x1, %bl
|
||||
data32 je xext
|
||||
DATA32 je xext
|
||||
|
||||
int $0x12
|
||||
data32 jmp xdone
|
||||
DATA32 jmp xdone
|
||||
|
||||
xext:
|
||||
movb $0x88, %ah
|
||||
@@ -808,7 +808,7 @@ xext:
|
||||
xdone:
|
||||
movw %ax, %bx
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movw %bx, %ax
|
||||
@@ -845,7 +845,7 @@ ENTRY(get_eisamemsize)
|
||||
shll $16, %ebx
|
||||
movw %ax, %bx
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movl $0xFFFFFFFF, %eax
|
||||
@@ -906,24 +906,24 @@ ENTRY(get_mmap_entry)
|
||||
movl $0xe820, %eax
|
||||
int $0x15
|
||||
|
||||
data32 jc xnosmap
|
||||
DATA32 jc xnosmap
|
||||
|
||||
cmpl $0x534d4150, %eax
|
||||
data32 jne xnosmap
|
||||
DATA32 jne xnosmap
|
||||
|
||||
cmpl $0x14, %ecx
|
||||
data32 jl xnosmap
|
||||
DATA32 jl xnosmap
|
||||
|
||||
cmpl $0x400, %ecx
|
||||
data32 jg xnosmap
|
||||
DATA32 jg xnosmap
|
||||
|
||||
data32 jmp xsmap
|
||||
DATA32 jmp xsmap
|
||||
|
||||
xnosmap:
|
||||
movl $0, %ecx
|
||||
|
||||
xsmap:
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
/* write length of buffer (zero if error) into "addr" */
|
||||
@@ -1001,10 +1001,10 @@ ENTRY(patch_code) /* labels start with "pc_" */
|
||||
mov %ax, %es
|
||||
mov %ax, %fs
|
||||
mov %ax, %gs
|
||||
addr32 movl $0, 0
|
||||
ADDR32 movl $0, 0
|
||||
pc_stop:
|
||||
hlt
|
||||
data32 jmp pc_stop
|
||||
DATA32 jmp pc_stop
|
||||
ENTRY(patch_code_end)
|
||||
|
||||
.code32
|
||||
@@ -1054,7 +1054,7 @@ ENTRY(big_linux_boot)
|
||||
movw %ax, %ss
|
||||
|
||||
/* jump to start */
|
||||
data32 addr32 ljmp (offset)
|
||||
DATA32 ADDR32 ljmp (offset)
|
||||
.code32
|
||||
|
||||
|
||||
@@ -1103,7 +1103,7 @@ ENTRY(cls)
|
||||
xorb %ah, %ah
|
||||
int $0x10 /* Set Video mode (clears screen) */
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
pop %ebx
|
||||
@@ -1133,7 +1133,7 @@ ENTRY(nocursor)
|
||||
movb $0x1, %ah
|
||||
int $0x10
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
pop %edx
|
||||
@@ -1168,7 +1168,7 @@ ENTRY(getxy)
|
||||
movb $0x3, %ah
|
||||
int $0x10 /* get cursor position */
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %dl, %ah
|
||||
@@ -1207,7 +1207,7 @@ ENTRY(gotoxy)
|
||||
movb $0x2, %ah
|
||||
int $0x10 /* set cursor position */
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
pop %edx
|
||||
@@ -1271,7 +1271,7 @@ ENTRY(set_attrib)
|
||||
movw $1, %cx
|
||||
int $0x10
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
pop %ecx
|
||||
@@ -1310,11 +1310,11 @@ ENTRY(getrtsecs)
|
||||
movb $0x2, %ah
|
||||
int $0x1a
|
||||
|
||||
data32 jnc gottime
|
||||
DATA32 jnc gottime
|
||||
movb $0xff, %dh
|
||||
|
||||
gottime:
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movb %dh, %al
|
||||
@@ -1344,7 +1344,7 @@ ENTRY(getkey)
|
||||
|
||||
movw %ax, %bx /* real_to_prot uses %eax */
|
||||
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
movw %bx, %ax
|
||||
@@ -1379,15 +1379,15 @@ ENTRY(checkkey)
|
||||
movb $0x1, %ah
|
||||
int $0x16
|
||||
|
||||
data32 jz notpending
|
||||
DATA32 jz notpending
|
||||
movw %ax, %bx
|
||||
data32 jmp pending
|
||||
DATA32 jmp pending
|
||||
|
||||
notpending:
|
||||
movl $0xFFFFFFFF, %ebx
|
||||
|
||||
pending:
|
||||
data32 call EXT_C(real_to_prot)
|
||||
DATA32 call EXT_C(real_to_prot)
|
||||
.code32
|
||||
|
||||
mov %ebx, %eax
|
||||
|
||||
Reference in new issue
Block a user