Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 309167
b: refs/heads/master
c: 51edbe6
h: refs/heads/master
i:
  309165: b6248a4
  309163: b9a5d1f
  309159: e6eba22
  309151: 3afc358
v: v3
  • Loading branch information
H. Peter Anvin committed May 16, 2012
1 parent 42d9ced commit 5edcde9
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 36 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 796038799a72adb279d785c9154df6eeb98b6e8d
refs/heads/master: 51edbe6a2f47c78c6c6e529999ee0a044fe59a89
8 changes: 8 additions & 0 deletions trunk/arch/x86/realmode/rm/trampoline_32.S
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,12 @@ ENTRY(trampoline_start)
ENTRY(startup_32) # note: also used from wakeup_asm.S
jmp *%eax

.bss
.balign 8
GLOBAL(trampoline_header)
tr_start: .space 4
tr_gdt_pad: .space 2
tr_gdt: .space 6
END(trampoline_header)

#include "trampoline_common.S"
25 changes: 25 additions & 0 deletions trunk/arch/x86/realmode/rm/trampoline_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -125,4 +125,29 @@ ENTRY(startup_64)
# Now jump into the kernel using virtual addresses
jmpq *tr_start(%rip)

.section ".rodata","a"
# Duplicate the global descriptor table
# so the kernel can live anywhere
.balign 16
.globl tr_gdt
tr_gdt:
.short tr_gdt_end - tr_gdt - 1 # gdt limit
.long pa_tr_gdt
.short 0
.quad 0x00cf9b000000ffff # __KERNEL32_CS
.quad 0x00af9b000000ffff # __KERNEL_CS
.quad 0x00cf93000000ffff # __KERNEL_DS
tr_gdt_end:

.bss
.balign PAGE_SIZE
GLOBAL(trampoline_pgd) .space PAGE_SIZE

.balign 8
GLOBAL(trampoline_header)
tr_start: .space 8
GLOBAL(tr_cr4) .space 4
GLOBAL(tr_efer) .space 8
END(trampoline_header)

#include "trampoline_common.S"
35 changes: 0 additions & 35 deletions trunk/arch/x86/realmode/rm/trampoline_common.S
Original file line number Diff line number Diff line change
@@ -1,42 +1,7 @@
.section ".rodata","a"

#ifdef CONFIG_X86_64
# Duplicate the global descriptor table
# so the kernel can live anywhere
.balign 16
.globl tr_gdt
tr_gdt:
.short tr_gdt_end - tr_gdt - 1 # gdt limit
.long pa_tr_gdt
.short 0
.quad 0x00cf9b000000ffff # __KERNEL32_CS
.quad 0x00af9b000000ffff # __KERNEL_CS
.quad 0x00cf93000000ffff # __KERNEL_DS
tr_gdt_end:
#endif

.balign 4
tr_idt: .fill 1, 6, 0

.bss

.balign 4
GLOBAL(trampoline_status) .space 4

.balign 8
GLOBAL(trampoline_header)
#ifdef CONFIG_X86_32
tr_start: .space 4
tr_gdt_pad: .space 2
tr_gdt: .space 6
#else
tr_start: .space 8
GLOBAL(tr_cr4) .space 4
GLOBAL(tr_efer) .space 8
#endif
END(trampoline_header)

#ifdef CONFIG_X86_64
.balign PAGE_SIZE
GLOBAL(trampoline_pgd) .space PAGE_SIZE
#endif

0 comments on commit 5edcde9

Please sign in to comment.