[syslinux:master] core: document the stack location, use STACK_TOP throughout

syslinux-bot for H. Peter Anvin hpa at zytor.com
Fri Feb 12 16:51:11 PST 2010


Commit-ID:  a68e1063c089a84675a01a8a0e1c3669d5b040c2
Gitweb:     http://syslinux.zytor.com/commit/a68e1063c089a84675a01a8a0e1c3669d5b040c2
Author:     H. Peter Anvin <hpa at zytor.com>
AuthorDate: Fri, 12 Feb 2010 16:49:55 -0800
Committer:  H. Peter Anvin <hpa at zytor.com>
CommitDate: Fri, 12 Feb 2010 16:49:55 -0800

core: document the stack location, use STACK_TOP throughout

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 at zytor.com>


---
 core/diskstart.inc |    2 +-
 core/isolinux.asm  |    2 +-
 core/layout.inc    |   10 +++++++++-
 core/pxelinux.asm  |    5 +----
 4 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/core/diskstart.inc b/core/diskstart.inc
index 5322922..e194b97 100644
--- a/core/diskstart.inc
+++ b/core/diskstart.inc
@@ -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
diff --git a/core/isolinux.asm b/core/isolinux.asm
index 2627c2d..ef7d92d 100644
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -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
diff --git a/core/layout.inc b/core/layout.inc
index db035b5..19b5057 100644
--- a/core/layout.inc
+++ b/core/layout.inc
@@ -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
diff --git a/core/pxelinux.asm b/core/pxelinux.asm
index c3caacd..ff0f36c 100644
--- a/core/pxelinux.asm
+++ b/core/pxelinux.asm
@@ -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
 



More information about the Syslinux-commits mailing list