aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/boot/trampoline.S
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2012-09-12 10:17:34 +0200
committerJan Beulich <jbeulich@suse.com>2012-09-12 10:17:34 +0200
commit7aa9625cc4b549a6316b43c5f07cc2dec1d7a8ce (patch)
treeef21c0647953f717ea89209808c7ddbd5b5adf88 /xen/arch/x86/boot/trampoline.S
parent9badeb5dcd4deaebcab6d736943b8ffc2afdacb3 (diff)
downloadxen-7aa9625cc4b549a6316b43c5f07cc2dec1d7a8ce.tar.gz
xen-7aa9625cc4b549a6316b43c5f07cc2dec1d7a8ce.tar.bz2
xen-7aa9625cc4b549a6316b43c5f07cc2dec1d7a8ce.zip
x86: retrieve keyboard shift status flags from BIOS
Recent Linux tries to make use of this, and has no way of getting at these bits without Xen assisting it. There doesn't appear to be a way to obtain the same information from UEFI. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/boot/trampoline.S')
-rw-r--r--xen/arch/x86/boot/trampoline.S9
1 files changed, 9 insertions, 0 deletions
diff --git a/xen/arch/x86/boot/trampoline.S b/xen/arch/x86/boot/trampoline.S
index 4421fc2c69..c6bda28103 100644
--- a/xen/arch/x86/boot/trampoline.S
+++ b/xen/arch/x86/boot/trampoline.S
@@ -184,11 +184,16 @@ trampoline_boot_cpu_entry:
* 1. Get memory map.
* 2. Get Enhanced Disk Drive (EDD) information.
* 3. Set video mode.
+ * 4. Get keyboard shift flags.
*/
call get_memory_map
call get_edd
call video
+ mov $0x0200,%ax
+ int $0x16
+ mov %al,bootsym(kbd_shift_flags)
+
/* Disable irqs before returning to protected mode. */
cli
@@ -221,6 +226,10 @@ trampoline_boot_cpu_entry:
skip_realmode:
.byte 0
+ .globl kbd_shift_flags
+kbd_shift_flags:
+ .byte 0
+
rm_idt: .word 256*4-1, 0, 0
#include "mem.S"