x86, realmode: fix 64-bit wakeup sequence

There were number of issues in wakeup sequence:

- Wakeup stack was placed in hardcoded address.
- NX bit in EFER was not enabled.
- Initialization incorrectly set physical address
of secondary_startup_64.
- Some alignment issues.

This patch fixes these issues and in addition:

- Unifies coding conventions in .S files.
- Sets alignments of code and data right.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Link: http://lkml.kernel.org/r/1336501366-28617-18-git-send-email-jarkko.sakkinen@intel.com
Originally-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Cc: Len Brown <len.brown@intel.com>
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
Jarkko Sakkinen
2012-05-08 21:22:40 +03:00
committed by H. Peter Anvin
parent 6feb592dce
commit 8e029fcdd8
9 changed files with 108 additions and 105 deletions

View File

@@ -0,0 +1,19 @@
/*
* Common heap and stack allocations
*/
#include <linux/linkage.h>
.data
GLOBAL(HEAP)
.long rm_heap
GLOBAL(heap_end)
.long rm_stack
.bss
.balign 16
GLOBAL(rm_heap)
.space 2048
GLOBAL(rm_stack)
.space 2048
GLOBAL(rm_stack_end)