aboutsummaryrefslogtreecommitdiffstats
path: root/pxelinux.asm
diff options
context:
space:
mode:
Diffstat (limited to 'pxelinux.asm')
-rw-r--r--pxelinux.asm87
1 files changed, 5 insertions, 82 deletions
diff --git a/pxelinux.asm b/pxelinux.asm
index f447b7de..6735615f 100644
--- a/pxelinux.asm
+++ b/pxelinux.asm
@@ -20,25 +20,21 @@
%define IS_PXELINUX 1
%include "macros.inc"
+%include "config.inc"
%include "kernel.inc"
%include "bios.inc"
%include "tracers.inc"
%include "pxe.inc"
;
-; Some semi-configurable constants... change on your own risk. Most are imposed
-; by the kernel.
+; Some semi-configurable constants... change on your own risk.
;
my_id equ pxelinux_id
-max_cmd_len equ 255 ; Must be odd; 255 is the kernel limit
FILENAME_MAX_LG2 equ 6 ; log2(Max filename size Including final null)
FILENAME_MAX equ (1 << FILENAME_MAX_LG2)
NULLFILE equ 0 ; Zero byte == null file name
REBOOT_TIME equ 5*60 ; If failure, time until full reset
-HIGHMEM_MAX equ 037FFFFFFh ; DEFAULT highest address for an initrd
%assign HIGHMEM_SLOP 128*1024 ; Avoid this much memory near the top
-DEFAULT_BAUD equ 9600 ; Default baud rate for serial port
-BAUD_DIVISOR equ 115200 ; Serial port parameter
MAX_SOCKETS_LG2 equ 6 ; log2(Max number of open sockets)
MAX_SOCKETS equ (1 << MAX_SOCKETS_LG2)
TFTP_PORT equ htons(69) ; Default TFTP port
@@ -213,6 +209,7 @@ InitRDCNameLen resw 1 ; Length of unmangled initrd name
NextCharJump resw 1 ; Routine to interpret next print char
SetupSecs resw 1 ; Number of setup sectors
A20Test resw 1 ; Counter for testing status of A20
+A20Type resw 1 ; A20 type
CmdLineLen resw 1 ; Length of command line including null
GraphXSize resw 1 ; Width of splash screen file
VGAPos resw 1 ; Pointer into VGA memory
@@ -593,84 +590,10 @@ udp_init:
jmp kaboom
.success:
-;
-; Check that no moron is trying to boot Linux on a 286 or so. According
-; to Intel, the way to check is to see if the high 4 bits of the FLAGS
-; register are either all stuck at 1 (8086/8088) or all stuck at 0
-; (286 in real mode), if not it is a 386 or higher. They didn't
-; say how to check for a 186/188, so I *hope* it falls out as a 8086
-; or 286 in this test.
-;
-; Also, provide an escape route in case it doesn't work.
-;
-check_escapes:
- mov ah,02h ; Check keyboard flags
- int 16h
- mov [KbdFlags],al ; Save for boot prompt check
- test al,04h ; Ctrl->skip 386 check
- jnz skip_checks
-test_8086:
- pushf ; Get flags
- pop ax
- and ax,0FFFh ; Clear top 4 bits
- push ax ; Load into FLAGS
- popf
- pushf ; And load back
- pop ax
- and ax,0F000h ; Get top 4 bits
- cmp ax,0F000h ; If set -> 8086/8088
- je not_386
-test_286:
- pushf ; Get flags
- pop ax
- or ax,0F000h ; Set top 4 bits
- push ax
- popf
- pushf
- pop ax
- and ax,0F000h ; Get top 4 bits
- jnz is_386 ; If not clear -> 386
-not_386:
- mov si,err_not386
- call writestr
- jmp kaboom
-is_386:
- ; Now we know it's a 386 or higher
-;
-; Now check that there is sufficient low (DOS) memory
-;
- int 12h
- cmp ax,(real_mode_seg+0xa00) >> 6
- jae enough_ram
- mov si,err_noram
- call writestr
- jmp kaboom
-enough_ram:
-skip_checks:
-
-;
-; Check if we're 386 (as opposed to 486+); if so we need to blank out
-; the WBINVD instruction
-;
-; We check for 486 by setting EFLAGS.AC
-;
- pushfd ; Save the good flags
- pushfd
- pop eax
- mov ebx,eax
- xor eax,(1 << 18) ; AC bit
- push eax
- popfd
- pushfd
- pop eax
- popfd ; Restore the original flags
- xor eax,ebx
- jnz is_486
;
-; 386 - Looks like we better blot out the WBINVD instruction
+; Common initialization code
;
- mov byte [try_wbinvd],0c3h ; Near RET
-is_486:
+%include "cpuinit.inc"
;
; Now we're all set to start with our *real* business. First load the