Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
98
arch/i386/boot/bootsect.S
Normal file
98
arch/i386/boot/bootsect.S
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* 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
|
Reference in New Issue
Block a user