]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kvm: Document the 'reset vector' hack
authorPekka Enberg <penberg@cs.helsinki.fi>
Sat, 27 Mar 2010 09:15:31 +0000 (11:15 +0200)
committerPekka Enberg <penberg@cs.helsinki.fi>
Sat, 27 Mar 2010 09:15:31 +0000 (11:15 +0200)
Signed-off-by: Pekka Enberg <penberg@cs.helsinki.fi>
tools/kvm/kvm.c

index e922b93804c83be3c606490fe8edc926e507fd8a..b7ec6e625ad3e08c8bf53a1a7d9d7c9f2435aafe 100644 (file)
@@ -153,6 +153,13 @@ static inline uint32_t segment_to_flat(uint16_t selector, uint16_t offset)
        return ((uint32_t)selector << 4) + (uint32_t) offset;
 }
 
+/*
+ * HACK ALERT! KVM seems to be unable to run 16-bit real mode if 'cs' selector
+ * does not equal to 0xf000 at the beginning. To work around that, we need a
+ * 'reset vector' at 0xf000:0xfff0 that has an hard-coded jump to 0x000:0x7c000
+ * where we also load the Linux kernel boot sector and setup code.
+ */
+
 #define RESET_VECTOR_CS                0xf000
 #define RESET_VECTOR_IP                0xfff0