at v2.6.21 98 lines 2.2 kB view raw
1/* 2 * bootsect.S Copyright (C) 1991, 1992 Linus Torvalds 3 * 4 * modified by Drew Eckhardt 5 * modified by Bruce Evans (bde) 6 * modified by Chris Noe (May 1999) (as86 -> gas) 7 * gutted by H. Peter Anvin (Jan 2003) 8 * 9 * BIG FAT NOTE: We're in real mode using 64k segments. Therefore segment 10 * addresses must be multiplied by 16 to obtain their respective linear 11 * addresses. To avoid confusion, linear addresses are written using leading 12 * hex while segment addresses are written as segment:offset. 13 * 14 */ 15 16#include <asm/boot.h> 17 18SETUPSECTS = 4 /* default nr of setup-sectors */ 19BOOTSEG = 0x07C0 /* original address of boot-sector */ 20INITSEG = DEF_INITSEG /* we move boot here - out of the way */ 21SETUPSEG = DEF_SETUPSEG /* setup starts here */ 22SYSSEG = DEF_SYSSEG /* system loaded at 0x10000 (65536) */ 23SYSSIZE = DEF_SYSSIZE /* system size: # of 16-byte clicks */ 24 /* to be loaded */ 25ROOT_DEV = 0 /* ROOT_DEV is now written by "build" */ 26SWAP_DEV = 0 /* SWAP_DEV is now written by "build" */ 27 28#ifndef SVGA_MODE 29#define SVGA_MODE ASK_VGA 30#endif 31 32#ifndef RAMDISK 33#define RAMDISK 0 34#endif 35 36#ifndef ROOT_RDONLY 37#define ROOT_RDONLY 1 38#endif 39 40.code16 41.text 42 43.global _start 44_start: 45 46 # Normalize the start address 47 jmpl $BOOTSEG, $start2 48 49start2: 50 movw %cs, %ax 51 movw %ax, %ds 52 movw %ax, %es 53 movw %ax, %ss 54 movw $0x7c00, %sp 55 sti 56 cld 57 58 movw $bugger_off_msg, %si 59 60msg_loop: 61 lodsb 62 andb %al, %al 63 jz die 64 movb $0xe, %ah 65 movw $7, %bx 66 int $0x10 67 jmp msg_loop 68 69die: 70 # Allow the user to press a key, then reboot 71 xorw %ax, %ax 72 int $0x16 73 int $0x19 74 75 # int 0x19 should never return. In case it does anyway, 76 # invoke the BIOS reset code... 77 ljmp $0xf000,$0xfff0 78 79 80bugger_off_msg: 81 .ascii "Direct booting from floppy is no longer supported.\r\n" 82 .ascii "Please use a boot loader program instead.\r\n" 83 .ascii "\n" 84 .ascii "Remove disk and press any key to reboot . . .\r\n" 85 .byte 0 86 87 88 # Kernel attributes; used by setup 89 90 .org 497 91setup_sects: .byte SETUPSECTS 92root_flags: .word ROOT_RDONLY 93syssize: .word SYSSIZE 94swap_dev: .word SWAP_DEV 95ram_size: .word RAMDISK 96vid_mode: .word SVGA_MODE 97root_dev: .word ROOT_DEV 98boot_flag: .word 0xAA55