summaryrefslogtreecommitdiff
path: root/util/cbfstool/linux_trampoline.S
diff options
context:
space:
mode:
Diffstat (limited to 'util/cbfstool/linux_trampoline.S')
-rw-r--r--util/cbfstool/linux_trampoline.S15
1 files changed, 7 insertions, 8 deletions
diff --git a/util/cbfstool/linux_trampoline.S b/util/cbfstool/linux_trampoline.S
index 65819e948b..3b4e730b33 100644
--- a/util/cbfstool/linux_trampoline.S
+++ b/util/cbfstool/linux_trampoline.S
@@ -31,7 +31,6 @@
#define E820_OFFSET 0x2d0
.trampoline_start:
-
cld
xor %edx, %edx
mov $0, %ecx
@@ -114,12 +113,13 @@ jnz .tableScan
** Use TRAMPOLINE_ENTRY_LOC as a scratchpad.
*/
mov $TRAMPOLINE_ENTRY_LOC, %eax
-sgdt (%eax)
-mov 2(%eax), %ebx
-movl $0x0000ffff, 16(%ebx)
-movl $0x00cf9b00, 20(%ebx)
-movl $0x0000ffff, 24(%ebx)
-movl $0x00cf9300, 28(%ebx)
+movl $0x0000ffff, 16(%eax) // Set up the 2 new descriptors
+movl $0x00cf9b00, 20(%eax)
+movl $0x0000ffff, 24(%eax)
+movl $0x00cf9300, 28(%eax)
+movb $0x2b, 0(%eax) // Set the size
+movl %eax, 2(%eax) // Set pointer to new GDT
+lgdt (%eax) // Load it
/* finally: jump to kernel */
mov $LINUX_PARAM_LOC, %esi
@@ -129,5 +129,4 @@ jmp *(LINUX_PARAM_LOC + LINUX_ENTRY_OFFSET)
2:
hlt
jmp 2b
-
.trampoline_end: