diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2012-05-16 16:44:10 -0400 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2012-05-16 16:44:10 -0400 |
commit | 51edbe6a2f47c78c6c6e529999ee0a044fe59a89 (patch) | |
tree | 8e68fcbac877e409e04596e97f6868d7db8f3fe2 /arch/x86/realmode/rm/trampoline_64.S | |
parent | 796038799a72adb279d785c9154df6eeb98b6e8d (diff) |
x86, realmode: Move not-common bits out of trampoline_common.S
Move the bits that aren't actually common out of trampoline_common.S
and into the arch-specific files. Furthermore, make sure the page
directory is first in the .bss section for trampoline_64.S in order to
not waste an entire page of memory.
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Jarkko Sakkinen <jarkko.sakkinen@intel.com>
Diffstat (limited to 'arch/x86/realmode/rm/trampoline_64.S')
-rw-r--r-- | arch/x86/realmode/rm/trampoline_64.S | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/arch/x86/realmode/rm/trampoline_64.S b/arch/x86/realmode/rm/trampoline_64.S index 66e26f088288..1b9e1bc1ac5e 100644 --- a/arch/x86/realmode/rm/trampoline_64.S +++ b/arch/x86/realmode/rm/trampoline_64.S | |||
@@ -125,4 +125,29 @@ ENTRY(startup_64) | |||
125 | # Now jump into the kernel using virtual addresses | 125 | # Now jump into the kernel using virtual addresses |
126 | jmpq *tr_start(%rip) | 126 | jmpq *tr_start(%rip) |
127 | 127 | ||
128 | .section ".rodata","a" | ||
129 | # Duplicate the global descriptor table | ||
130 | # so the kernel can live anywhere | ||
131 | .balign 16 | ||
132 | .globl tr_gdt | ||
133 | tr_gdt: | ||
134 | .short tr_gdt_end - tr_gdt - 1 # gdt limit | ||
135 | .long pa_tr_gdt | ||
136 | .short 0 | ||
137 | .quad 0x00cf9b000000ffff # __KERNEL32_CS | ||
138 | .quad 0x00af9b000000ffff # __KERNEL_CS | ||
139 | .quad 0x00cf93000000ffff # __KERNEL_DS | ||
140 | tr_gdt_end: | ||
141 | |||
142 | .bss | ||
143 | .balign PAGE_SIZE | ||
144 | GLOBAL(trampoline_pgd) .space PAGE_SIZE | ||
145 | |||
146 | .balign 8 | ||
147 | GLOBAL(trampoline_header) | ||
148 | tr_start: .space 8 | ||
149 | GLOBAL(tr_cr4) .space 4 | ||
150 | GLOBAL(tr_efer) .space 8 | ||
151 | END(trampoline_header) | ||
152 | |||
128 | #include "trampoline_common.S" | 153 | #include "trampoline_common.S" |