core: document the stack location, use STACK_TOP throughout
authorH. Peter Anvin <hpa@zytor.com>
Sat, 13 Feb 2010 00:49:55 +0000 (16:49 -0800)
committerH. Peter Anvin <hpa@zytor.com>
Sat, 13 Feb 2010 00:49:55 +0000 (16:49 -0800)
The global absolute symbol STACK_TOP defined in layout.inc can be used
by the linker script as well as by anything else that needs to know
where the stack is.  Also document why we do it differently for
PXELINUX.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
core/diskstart.inc
core/isolinux.asm
core/layout.inc
core/pxelinux.asm

index 5322922..e194b97 100644 (file)
@@ -28,7 +28,7 @@ SuperInfo     resq 16                 ; The first 16 bytes expanded 8 times
 ; "close" to the initial stack pointer offset, in order to
 ; reduce the code size...
 ;
-StackBuf       equ $-44-32             ; Start the stack here (grow down - 4K)
+StackBuf       equ STACK_TOP-44-32     ; Start the stack here (grow down - 4K)
 PartInfo       equ StackBuf            ; Saved partition table entry
 FloppyTable    equ PartInfo+16         ; Floppy info table (must follow PartInfo)
 OrigFDCTabPtr  equ StackBuf-8          ; The 2nd high dword on the stack
index 2627c2d..ef7d92d 100644 (file)
@@ -199,7 +199,7 @@ Files               resb MAX_OPEN*open_file_t_size
 ;; CD-ROM sector (2K) of the file, so the number one priority is actually
 ;; loading the rest.
 ;;
-StackBuf       equ $-44                ; 44 bytes needed for
+StackBuf       equ STACK_TOP-44        ; 44 bytes needed for
                                        ; the bootsector chainloading
                                        ; code!
 OrigESDI       equ StackBuf-4          ; The high dword on the stack
index db035b5..19b5057 100644 (file)
@@ -1,7 +1,7 @@
 ; -----------------------------------------------------------------------
 ;
 ;   Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
-;   Copyright 2009 Intel Corporation; author: H. Peter Anvin
+;   Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin
 ;
 ;   This program is free software; you can redistribute it and/or modify
 ;   it under the terms of the GNU General Public License as published by
@@ -26,7 +26,15 @@ BSS_START    equ 0800h
 ; Text starts at the load address of 07C00h.
 TEXT_START     equ 7C00h
 
+;
 ; Stack layout
+;
+; PXELINUX: There are apparently some AMI BIOSes in the field which
+; put their BEV stack somewhere below 7C00h (and therefore don't
+; handle localboot properly), so avoid that immediate memory region.
+; The range that is known to be bad is approximately 75E8..7C00; the
+; lower bound is tight.
+; 
                global STACK_LEN, STACK_TOP, STACK_BASE
 STACK_LEN      equ 4096
 %if IS_PXELINUX
index c3caacd..ff0f36c 100644 (file)
@@ -213,10 +213,7 @@ packet_buf resb 2048               ; Transfer packet
 packet_buf_size        equ $-packet_buf
 
 ;
-; Location of the stack.  There are apparently some AMI BIOSes in the
-; field which put their BEV stack somewhere below 7C00h (and therefore
-; don't handle localboot properly), so avoid that immediate memory
-; region.
+; Location of the stack.
 ;
 StackBuf       equ STACK_TOP-44        ; Base of stack if we use our own