===================================================================
@@ -20,6 +20,8 @@
#include "boot.h" // IPL
#include "qemu-cfg.h"
+u16 emu_ver;
+
void
__set_irq(int vector, void *loc)
{
@@ -167,6 +169,8 @@ post()
* if someone knows how to do so reliably.
*/
qemu_cfg_port_probe();
+ if (qemu_cfg_port)
+ emu_ver = qemu_cfg_get_emulator_rev();
pic_setup();
timer_setup();
===================================================================
@@ -31,3 +31,11 @@ qemu_cfg_port_probe()
return qemu_cfg_port;
}
+u16 qemu_cfg_get_emulator_rev(void)
+{
+ u16 rev;
+
+ qemu_cfg_read((u8*)&rev, QEMU_CFG_EMULATOR, sizeof(rev));
+
+ return rev;
+}
===================================================================
@@ -12,8 +12,10 @@
#define QEMU_CFG_SIGNATURE 0x00
#define QEMU_CFG_ID 0x01
#define QEMU_CFG_UUID 0x02
+#define QEMU_CFG_EMULATOR 0x10
void qemu_cfg_read(u8 *buf, u16 f, int len);
int qemu_cfg_port_probe();
+u16 qemu_cfg_get_emulator_rev(void);
#endif
===================================================================
@@ -267,4 +267,11 @@ extern const char VERSION[];
// qemu-cfg.c
extern int qemu_cfg_port;
+// port.c
+extern u16 emu_ver;
+#define EMU_NONE 0x0000
+#define EMU_QEMU 0x0100
+#define EMU_QEMU_KVM 0x0101
+#define EMU_QEMU_KQEMU 0x0102
+
#endif // util.h
This patch retrieves the value of QEMU_CFG_EMULATOR and sets emu_ver, allowing the BIOS to runtime verify which emulator it is running on. Signed-off-by: Jes Sorensen <jes@sgi.com> --- src/post.c | 4 ++++ src/qemu-cfg.c | 8 ++++++++ src/qemu-cfg.h | 2 ++ src/util.h | 7 +++++++ 4 files changed, 21 insertions(+)