From 60e799f7b4479584c1baf7dc36dbf140663706e9 Mon Sep 17 00:00:00 2001 From: Adrian-Ken Rueegsegger Date: Wed, 18 Feb 2015 00:30:14 +0100 Subject: [PATCH] hw_x86_64: Set segment registers prior to mode transition The registers for the ds, es, fs and gs segments are hardcoded to GDT index 4 with requested privilege level set to 3. --- repos/base-hw/src/core/spec/x86_64/mode_transition.s | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/repos/base-hw/src/core/spec/x86_64/mode_transition.s b/repos/base-hw/src/core/spec/x86_64/mode_transition.s index 3bbc0e238..1bfbdea40 100644 --- a/repos/base-hw/src/core/spec/x86_64/mode_transition.s +++ b/repos/base-hw/src/core/spec/x86_64/mode_transition.s @@ -90,6 +90,13 @@ pushq $0x1b pushq (%rax) + /* Restore segment registers */ + mov $0x23, %rbx + mov %rbx, %ds + mov %rbx, %es + mov %rbx, %fs + mov %rbx, %gs + 1: jmp 1b /* end of the mode transition code */