|
- /*
- * bootsect.S Copyright (C) 1991, 1992 Linus Torvalds
- *
- * modified by Drew Eckhardt
- * modified by Bruce Evans (bde)
- * modified by Chris Noe (May 1999) (as86 -> gas)
- * gutted by H. Peter Anvin (Jan 2003)
- *
- * BIG FAT NOTE: We're in real mode using 64k segments. Therefore segment
- * addresses must be multiplied by 16 to obtain their respective linear
- * addresses. To avoid confusion, linear addresses are written using leading
- * hex while segment addresses are written as segment:offset.
- *
- */
-
- #include <asm/boot.h>
-
- SETUPSECTS = 4 /* default nr of setup-sectors */
- BOOTSEG = 0x07C0 /* original address of boot-sector */
- INITSEG = DEF_INITSEG /* we move boot here - out of the way */
- SETUPSEG = DEF_SETUPSEG /* setup starts here */
- SYSSEG = DEF_SYSSEG /* system loaded at 0x10000 (65536) */
- SYSSIZE = DEF_SYSSIZE /* system size: # of 16-byte clicks */
- /* to be loaded */
- ROOT_DEV = 0 /* ROOT_DEV is now written by "build" */
- SWAP_DEV = 0 /* SWAP_DEV is now written by "build" */
-
- #ifndef SVGA_MODE
- #define SVGA_MODE ASK_VGA
- #endif
-
- #ifndef RAMDISK
- #define RAMDISK 0
- #endif
-
- #ifndef ROOT_RDONLY
- #define ROOT_RDONLY 1
- #endif
-
- .code16
- .text
-
- .global _start
- _start:
-
- # Normalize the start address
- jmpl $BOOTSEG, $start2
-
- start2:
- movw %cs, %ax
- movw %ax, %ds
- movw %ax, %es
- movw %ax, %ss
- movw $0x7c00, %sp
- sti
- cld
-
- movw $bugger_off_msg, %si
-
- msg_loop:
- lodsb
- andb %al, %al
- jz die
- movb $0xe, %ah
- movw $7, %bx
- int $0x10
- jmp msg_loop
-
- die:
- # Allow the user to press a key, then reboot
- xorw %ax, %ax
- int $0x16
- int $0x19
-
- # int 0x19 should never return. In case it does anyway,
- # invoke the BIOS reset code...
- ljmp $0xf000,$0xfff0
-
-
- bugger_off_msg:
- .ascii "Direct booting from floppy is no longer supported.\r\n"
- .ascii "Please use a boot loader program instead.\r\n"
- .ascii "\n"
- .ascii "Remove disk and press any key to reboot . . .\r\n"
- .byte 0
-
-
- # Kernel attributes; used by setup
-
- .org 497
- setup_sects: .byte SETUPSECTS
- root_flags: .word ROOT_RDONLY
- syssize: .word SYSSIZE
- swap_dev: .word SWAP_DEV
- ram_size: .word RAMDISK
- vid_mode: .word SVGA_MODE
- root_dev: .word ROOT_DEV
- boot_flag: .word 0xAA55
|