2006-05-20 Yoshinori K. Okuji <okuji@enbug.org>
* boot/i386/pc/boot.S (real_start): Set %si earlier to eliminate duplication. (lba_mode): Use %eax more intensively to reduce the code size.
This commit is contained in:
parent
da2eb1812e
commit
75c8f25836
2 changed files with 15 additions and 11 deletions
|
@ -1,3 +1,9 @@
|
||||||
|
2006-05-20 Yoshinori K. Okuji <okuji@enbug.org>
|
||||||
|
|
||||||
|
* boot/i386/pc/boot.S (real_start): Set %si earlier to eliminate
|
||||||
|
duplication.
|
||||||
|
(lba_mode): Use %eax more intensively to reduce the code size.
|
||||||
|
|
||||||
2006-05-20 Marco Gerards <marco@gnu.org>
|
2006-05-20 Marco Gerards <marco@gnu.org>
|
||||||
|
|
||||||
* normal/lexer.c (grub_script_yylex): Don't filter out newlines.
|
* normal/lexer.c (grub_script_yylex): Don't filter out newlines.
|
||||||
|
|
|
@ -176,6 +176,9 @@ real_start:
|
||||||
cmpw $0xaa55, %bx
|
cmpw $0xaa55, %bx
|
||||||
jne chs_mode
|
jne chs_mode
|
||||||
|
|
||||||
|
/* set %si to the disk address packet */
|
||||||
|
movw $ABS(disk_address_packet), %si
|
||||||
|
|
||||||
/* check if AH=0x42 is supported if FORCE_LBA is zero */
|
/* check if AH=0x42 is supported if FORCE_LBA is zero */
|
||||||
MOV_MEM_TO_AL(ABS(force_lba)) /* movb ABS(force_lba), %al */
|
MOV_MEM_TO_AL(ABS(force_lba)) /* movb ABS(force_lba), %al */
|
||||||
testb %al, %al
|
testb %al, %al
|
||||||
|
@ -184,11 +187,13 @@ real_start:
|
||||||
jz chs_mode
|
jz chs_mode
|
||||||
|
|
||||||
lba_mode:
|
lba_mode:
|
||||||
/* set %si to the disk address packet */
|
xorl %eax, %eax
|
||||||
movw $ABS(disk_address_packet), %si
|
movw %ax, 4(%si)
|
||||||
|
movl %eax, 12(%si)
|
||||||
|
|
||||||
|
incw %ax
|
||||||
/* set the mode to non-zero */
|
/* set the mode to non-zero */
|
||||||
movb $1, -1(%si)
|
movb %al, -1(%si)
|
||||||
|
|
||||||
movl ABS(kernel_sector), %ebx
|
movl ABS(kernel_sector), %ebx
|
||||||
|
|
||||||
|
@ -196,7 +201,7 @@ lba_mode:
|
||||||
movw $0x0010, (%si)
|
movw $0x0010, (%si)
|
||||||
|
|
||||||
/* the blocks */
|
/* the blocks */
|
||||||
movw $1, 2(%si)
|
movw %ax, 2(%si)
|
||||||
|
|
||||||
/* the absolute address (low 32 bits) */
|
/* the absolute address (low 32 bits) */
|
||||||
movl %ebx, 8(%si)
|
movl %ebx, 8(%si)
|
||||||
|
@ -204,10 +209,6 @@ lba_mode:
|
||||||
/* the segment of buffer address */
|
/* the segment of buffer address */
|
||||||
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)
|
movw $GRUB_BOOT_MACHINE_BUFFER_SEG, 6(%si)
|
||||||
|
|
||||||
xorl %eax, %eax
|
|
||||||
movw %ax, 4(%si)
|
|
||||||
movl %eax, 12(%si)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory
|
* BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory
|
||||||
* Call with %ah = 0x42
|
* Call with %ah = 0x42
|
||||||
|
@ -245,9 +246,6 @@ chs_mode:
|
||||||
jmp hd_probe_error
|
jmp hd_probe_error
|
||||||
|
|
||||||
final_init:
|
final_init:
|
||||||
|
|
||||||
movw $ABS(sectors), %si
|
|
||||||
|
|
||||||
/* set the mode to zero */
|
/* set the mode to zero */
|
||||||
movb $0, -1(%si)
|
movb $0, -1(%si)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue