Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85414b69 authored by H. Peter Anvin's avatar H. Peter Anvin Committed by Linus Torvalds
Browse files

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: default avatarH. Peter Anvin <hpa@zytor.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 1d67953f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -37,6 +37,7 @@ Offset Type Description
0x1d0	unsigned long	EFI memory descriptor map pointer
0x1d4	unsigned long	EFI memory descriptor map size
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)
0x1e9	unsigned char	number of entries in EDDBUF (below)
0x1ea	unsigned char	number of entries in EDD_MBR_SIG_BUFFER (below)
+3 −3
Original line number Diff line number Diff line
@@ -45,10 +45,10 @@ startup_32:
 * 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
 * address we are running at.  The reserved chunk of the real-mode
 * data at 0x34-0x3f are used as the stack for this calculation.
 * Only 4 bytes are needed.
 * data at 0x1e4 (defined as a scratch field) are used as the stack
 * for this calculation. Only 4 bytes are needed.
 */
	leal 0x40(%esi), %esp
	leal (0x1e4+4)(%esi), %esp
	call 1f
1:	popl %ebp
	subl $1b, %ebp
+3 −3
Original line number Diff line number Diff line
@@ -46,10 +46,10 @@ startup_32:
 * 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
 * address we are running at.  The reserved chunk of the real-mode
 * data at 0x34-0x3f are used as the stack for this calculation.
 * Only 4 bytes are needed.
 * data at 0x1e4 (defined as a scratch field) are used as the stack
 * for this calculation. Only 4 bytes are needed.
 */
	leal	0x40(%esi), %esp
	leal	(0x1e4+4)(%esi), %esp
	call	1f
1:	popl	%ebp
	subl	$1b, %ebp