diff options
author | H. Peter Anvin <hpa@zytor.com> | 2007-07-11 15:18:33 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-12 13:55:54 -0400 |
commit | 85414b693ac037d709582a167a330db3a5d186d8 (patch) | |
tree | 78836556d59e28c335d2ba5be347c06f4298432e /arch | |
parent | 1d67953f2bda8876045c24ae58841f27d9bb7572 (diff) |
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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/i386/boot/compressed/head.S | 6 | ||||
-rw-r--r-- | arch/x86_64/boot/compressed/head.S | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/arch/i386/boot/compressed/head.S b/arch/i386/boot/compressed/head.S index 3517a32aaf41..f35ea2237522 100644 --- a/arch/i386/boot/compressed/head.S +++ b/arch/i386/boot/compressed/head.S | |||
@@ -45,10 +45,10 @@ startup_32: | |||
45 | * at and where we were actually loaded at. This can only be done | 45 | * at and where we were actually loaded at. This can only be done |
46 | * with a short local call on x86. Nothing else will tell us what | 46 | * with a short local call on x86. Nothing else will tell us what |
47 | * address we are running at. The reserved chunk of the real-mode | 47 | * address we are running at. The reserved chunk of the real-mode |
48 | * data at 0x34-0x3f are used as the stack for this calculation. | 48 | * data at 0x1e4 (defined as a scratch field) are used as the stack |
49 | * Only 4 bytes are needed. | 49 | * for this calculation. Only 4 bytes are needed. |
50 | */ | 50 | */ |
51 | leal 0x40(%esi), %esp | 51 | leal (0x1e4+4)(%esi), %esp |
52 | call 1f | 52 | call 1f |
53 | 1: popl %ebp | 53 | 1: popl %ebp |
54 | subl $1b, %ebp | 54 | subl $1b, %ebp |
diff --git a/arch/x86_64/boot/compressed/head.S b/arch/x86_64/boot/compressed/head.S index f9d5692a0106..1312bfaff306 100644 --- a/arch/x86_64/boot/compressed/head.S +++ b/arch/x86_64/boot/compressed/head.S | |||
@@ -46,10 +46,10 @@ startup_32: | |||
46 | * at and where we were actually loaded at. This can only be done | 46 | * at and where we were actually loaded at. This can only be done |
47 | * with a short local call on x86. Nothing else will tell us what | 47 | * with a short local call on x86. Nothing else will tell us what |
48 | * address we are running at. The reserved chunk of the real-mode | 48 | * address we are running at. The reserved chunk of the real-mode |
49 | * data at 0x34-0x3f are used as the stack for this calculation. | 49 | * data at 0x1e4 (defined as a scratch field) are used as the stack |
50 | * Only 4 bytes are needed. | 50 | * for this calculation. Only 4 bytes are needed. |
51 | */ | 51 | */ |
52 | leal 0x40(%esi), %esp | 52 | leal (0x1e4+4)(%esi), %esp |
53 | call 1f | 53 | call 1f |
54 | 1: popl %ebp | 54 | 1: popl %ebp |
55 | subl $1b, %ebp | 55 | subl $1b, %ebp |