]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blob - arch/x86_64/boot/bootsect.S
Linux-2.6.12-rc2
[mirror_ubuntu-artful-kernel.git] / arch / x86_64 / boot / bootsect.S
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
18 SETUPSECTS = 4 /* default nr of setup-sectors */
19 BOOTSEG = 0x07C0 /* original address of boot-sector */
20 INITSEG = DEF_INITSEG /* we move boot here - out of the way */
21 SETUPSEG = DEF_SETUPSEG /* setup starts here */
22 SYSSEG = DEF_SYSSEG /* system loaded at 0x10000 (65536) */
23 SYSSIZE = DEF_SYSSIZE /* system size: # of 16-byte clicks */
24 /* to be loaded */
25 ROOT_DEV = 0 /* ROOT_DEV is now written by "build" */
26 SWAP_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
49 start2:
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
60 msg_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
69 die:
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
80 bugger_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
91 setup_sects: .byte SETUPSECTS
92 root_flags: .word ROOT_RDONLY
93 syssize: .word SYSSIZE
94 swap_dev: .word SWAP_DEV
95 ram_size: .word RAMDISK
96 vid_mode: .word SVGA_MODE
97 root_dev: .word ROOT_DEV
98 boot_flag: .word 0xAA55