forked from Minki/linux
Define zero-page offset 0x1e4 as a scratch field, and use it
The relocatable kernel code needs a scratch field for the decompressor to determine its own location. It was using a location inside struct screen_info; reserve a free location and document it as scratch instead. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
1d67953f2b
commit
85414b693a
@ -37,6 +37,7 @@ Offset Type Description
|
|||||||
0x1d0 unsigned long EFI memory descriptor map pointer
|
0x1d0 unsigned long EFI memory descriptor map pointer
|
||||||
0x1d4 unsigned long EFI memory descriptor map size
|
0x1d4 unsigned long EFI memory descriptor map size
|
||||||
0x1e0 unsigned long ALT_MEM_K, alternative mem check, in Kb
|
0x1e0 unsigned long ALT_MEM_K, alternative mem check, in Kb
|
||||||
|
0x1e4 unsigned long Scratch field for the kernel setup code
|
||||||
0x1e8 char number of entries in E820MAP (below)
|
0x1e8 char number of entries in E820MAP (below)
|
||||||
0x1e9 unsigned char number of entries in EDDBUF (below)
|
0x1e9 unsigned char number of entries in EDDBUF (below)
|
||||||
0x1ea unsigned char number of entries in EDD_MBR_SIG_BUFFER (below)
|
0x1ea unsigned char number of entries in EDD_MBR_SIG_BUFFER (below)
|
||||||
|
@ -45,10 +45,10 @@ startup_32:
|
|||||||
* at and where we were actually loaded at. This can only be done
|
* at and where we were actually loaded at. This can only be done
|
||||||
* with a short local call on x86. Nothing else will tell us what
|
* with a short local call on x86. Nothing else will tell us what
|
||||||
* address we are running at. The reserved chunk of the real-mode
|
* address we are running at. The reserved chunk of the real-mode
|
||||||
* data at 0x34-0x3f are used as the stack for this calculation.
|
* data at 0x1e4 (defined as a scratch field) are used as the stack
|
||||||
* Only 4 bytes are needed.
|
* for this calculation. Only 4 bytes are needed.
|
||||||
*/
|
*/
|
||||||
leal 0x40(%esi), %esp
|
leal (0x1e4+4)(%esi), %esp
|
||||||
call 1f
|
call 1f
|
||||||
1: popl %ebp
|
1: popl %ebp
|
||||||
subl $1b, %ebp
|
subl $1b, %ebp
|
||||||
|
@ -46,10 +46,10 @@ startup_32:
|
|||||||
* at and where we were actually loaded at. This can only be done
|
* at and where we were actually loaded at. This can only be done
|
||||||
* with a short local call on x86. Nothing else will tell us what
|
* with a short local call on x86. Nothing else will tell us what
|
||||||
* address we are running at. The reserved chunk of the real-mode
|
* address we are running at. The reserved chunk of the real-mode
|
||||||
* data at 0x34-0x3f are used as the stack for this calculation.
|
* data at 0x1e4 (defined as a scratch field) are used as the stack
|
||||||
* Only 4 bytes are needed.
|
* for this calculation. Only 4 bytes are needed.
|
||||||
*/
|
*/
|
||||||
leal 0x40(%esi), %esp
|
leal (0x1e4+4)(%esi), %esp
|
||||||
call 1f
|
call 1f
|
||||||
1: popl %ebp
|
1: popl %ebp
|
||||||
subl $1b, %ebp
|
subl $1b, %ebp
|
||||||
|
Loading…
Reference in New Issue
Block a user