[PATCH] Remove bootsect_helper on x86_64 and pc98

From: Coywolf Qi Hunt
Date: Wed May 05 2004 - 03:59:25 EST


Coywolf Qi Hunt wrote:

Since "Direct booting from floppy is no longer supported", this patch is
to remove the bootsect_helper code. And also a comment fix.

The other two platforms x86_64 and PC-9800 should also be cleaned up too.

The same patches for x86_64 and pc98 enclosed.

--
Coywolf Qi Hunt
Admin of http://GreatCN.org and http://LoveCN.org

--- linux-2.6.5/arch/x86_64/boot/setup.S Mon Mar 8 10:30:36 2004
+++ linux/arch/x86_64/boot/setup.S Mon May 3 09:31:58 2004
@@ -132,7 +132,7 @@
ramdisk_size: .long 0 # its size in bytes

bootsect_kludge:
- .word bootsect_helper, SETUPSEG
+ .long 0 # obsolete

heap_end_ptr: .word modelist+1024 # (Header version 0x0201 or later)
# space from here (exclusive) down to
@@ -757,87 +757,6 @@
outb %al, $0x70
lret

-# This routine only gets called, if we get loaded by the simple
-# bootsect loader _and_ have a bzImage to load.
-# Because there is no place left in the 512 bytes of the boot sector,
-# we must emigrate to code space here.
-bootsect_helper:
- cmpw $0, %cs:bootsect_es
- jnz bootsect_second
-
- movb $0x20, %cs:type_of_loader
- movw %es, %ax
- shrw $4, %ax
- movb %ah, %cs:bootsect_src_base+2
- movw %es, %ax
- movw %ax, %cs:bootsect_es
- subw $SYSSEG, %ax
- lret # nothing else to do for now
-
-bootsect_second:
- pushw %cx
- pushw %si
- pushw %bx
- testw %bx, %bx # 64K full?
- jne bootsect_ex
-
- movw $0x8000, %cx # full 64K, INT15 moves words
- pushw %cs
- popw %es
- movw $bootsect_gdt, %si
- movw $0x8700, %ax
- int $0x15
- jc bootsect_panic # this, if INT15 fails
-
- movw %cs:bootsect_es, %es # we reset %es to always point
- incb %cs:bootsect_dst_base+2 # to 0x10000
-bootsect_ex:
- movb %cs:bootsect_dst_base+2, %ah
- shlb $4, %ah # we now have the number of
- # moved frames in %ax
- xorb %al, %al
- popw %bx
- popw %si
- popw %cx
- lret
-
-bootsect_gdt:
- .word 0, 0, 0, 0
- .word 0, 0, 0, 0
-
-bootsect_src:
- .word 0xffff
-
-bootsect_src_base:
- .byte 0x00, 0x00, 0x01 # base = 0x010000
- .byte 0x93 # typbyte
- .word 0 # limit16,base24 =0
-
-bootsect_dst:
- .word 0xffff
-
-bootsect_dst_base:
- .byte 0x00, 0x00, 0x10 # base = 0x100000
- .byte 0x93 # typbyte
- .word 0 # limit16,base24 =0
- .word 0, 0, 0, 0 # BIOS CS
- .word 0, 0, 0, 0 # BIOS DS
-
-bootsect_es:
- .word 0
-
-bootsect_panic:
- pushw %cs
- popw %ds
- cld
- leaw bootsect_panic_mess, %si
- call prtstr
-
-bootsect_panic_loop:
- jmp bootsect_panic_loop
-
-bootsect_panic_mess:
- .string "INT15 refuses to access high mem, giving up."

# This routine checks that the keyboard command queue is empty
# (after emptying the output buffers)
--- linux-2.6.5/arch/i386/boot98/setup.S Wed Feb 18 11:57:15 2004
+++ linux/arch/i386/boot98/setup.S Mon May 3 09:39:29 2004
@@ -146,7 +146,7 @@
ramdisk_size: .long 0 # its size in bytes

bootsect_kludge:
- .word bootsect_helper, SETUPSEG
+ .long 0 # obsolete

heap_end_ptr: .word modelist+1024 # (Header version 0x0201 or later)
# space from here (exclusive) down to
@@ -691,91 +691,6 @@
# sequence
lret

-# This routine only gets called, if we get loaded by the simple
-# bootsect loader _and_ have a bzImage to load.
-# Because there is no place left in the 512 bytes of the boot sector,
-# we must emigrate to code space here.
-bootsect_helper:
- cmpw $0, %cs:bootsect_es
- jnz bootsect_second
-
- movb $0x20, %cs:type_of_loader
- movw %es, %ax
- shrw $4, %ax
- movb %ah, %cs:bootsect_src_base+2
- movw %es, %ax
- movw %ax, %cs:bootsect_es
- subw $SYSSEG, %ax
- lret # nothing else to do for now
-
-bootsect_second:
- pushw %bx
- pushw %cx
- pushw %si
- pushw %di
- testw %bp, %bp # 64K full ?
- jne bootsect_ex
-
- xorw %cx, %cx # zero means full 64K
- pushw %cs
- popw %es
- movw $bootsect_gdt, %bx
- xorw %si, %si # source address
- xorw %di, %di # destination address
- movb $0x90, %ah
- int $0x1f
- jc bootsect_panic # this, if INT1F fails
-
- movw %cs:bootsect_es, %es # we reset %es to always point
- incb %cs:bootsect_dst_base+2 # to 0x10000
-bootsect_ex:
- movb %cs:bootsect_dst_base+2, %ah
- shlb $4, %ah # we now have the number of
- # moved frames in %ax
- xorb %al, %al
- popw %di
- popw %si
- popw %cx
- popw %bx
- lret
-
-bootsect_gdt:
- .word 0, 0, 0, 0
- .word 0, 0, 0, 0
-
-bootsect_src:
- .word 0xffff
-
-bootsect_src_base:
- .byte 0x00, 0x00, 0x01 # base = 0x010000
- .byte 0x93 # typbyte
- .word 0 # limit16,base24 =0
-
-bootsect_dst:
- .word 0xffff
-
-bootsect_dst_base:
- .byte 0x00, 0x00, 0x10 # base = 0x100000
- .byte 0x93 # typbyte
- .word 0 # limit16,base24 =0
- .word 0, 0, 0, 0 # BIOS CS
- .word 0, 0, 0, 0 # BIOS DS
-
-bootsect_es:
- .word 0
-
-bootsect_panic:
- pushw %cs
- popw %ds
- cld
- leaw bootsect_panic_mess, %si
- call prtstr
-
-bootsect_panic_loop:
- jmp bootsect_panic_loop
-
-bootsect_panic_mess:
- .string "INT1F refuses to access high mem, giving up."

# This routine prints one character (in %al) on console.
# PC-9800 doesn't have BIOS-function to do it like IBM PC's INT 10h - 0Eh,