Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> --- I had this patch lying around but I don't think I ever got qruncom to work completely.
Makefile.target | 3 ++ tests/Makefile | 7 ++-- tests/qruncom.c | 93 +++++++++++++++++++++++++++++++++++------------------- 3 files changed, 67 insertions(+), 36 deletions(-) diff --git a/Makefile.target b/Makefile.target index 5784844..4ac8f6f 100644 --- a/Makefile.target +++ b/Makefile.target @@ -339,6 +339,9 @@ obj-y += $(addprefix ../libdis/, $(libdis-y)) obj-y += $(libobj-y) obj-y += $(addprefix $(HWDIR)/, $(hw-obj-y)) +else # !CONFIG_SOFTMMU +libqemu.a: $(addprefix ../, $(common-obj-y)) $(libobj-y) $(addprefix ../libdis/, $(libdis-y)) + ar rc $@ $^ endif # CONFIG_SOFTMMU obj-y += $(addprefix ../, $(trace-obj-y)) diff --git a/tests/Makefile b/tests/Makefile index e43ec70..6dbeb6f 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -116,9 +116,10 @@ speed: sha1 sha1-i386 # broken test # NOTE: -fomit-frame-pointer is currently needed : this is a bug in libqemu -qruncom: qruncom.c ../ioport-user.c ../i386-user/libqemu.a - $(CC) $(CFLAGS) -fomit-frame-pointer $(LDFLAGS) -I../target-i386 -I.. -I../i386-user -I../fpu \ - -o $@ $(filter %.c, $^) -L../i386-user -lqemu -lm +qruncom: qruncom.c + #$(MAKE) -C ../i386-linux-user libqemu.a + $(CC) $(CFLAGS) -fomit-frame-pointer $(LDFLAGS) -I../target-i386 -I.. -I../linux-user -I../i386-linux-user -I../fpu \ + -o $@ $(filter %.c, $^) -L../i386-linux-user -lqemu -lm # arm test hello-arm: hello-arm.o diff --git a/tests/qruncom.c b/tests/qruncom.c index 079f7a2..66fc223 100644 --- a/tests/qruncom.c +++ b/tests/qruncom.c @@ -12,10 +12,68 @@ #include <signal.h> #include <malloc.h> +#define NEED_CPU_H 1 #include "cpu.h" //#define SIGTEST +unsigned long guest_base = 0; +int have_guest_base = 0; +int singlestep = 0; +unsigned long last_brk = 0; + +void cpu_outb(uint32_t addr, uint8_t val) +{ + fprintf(stderr, "outb: port=0x%04"PRIx32", data=%02"PRIx8"\n", + addr, val); +} + +void cpu_outw(uint32_t addr, uint16_t val) +{ + fprintf(stderr, "outw: port=0x%04"PRIx32", data=%04"PRIx16"\n", + addr, val); +} + +void cpu_outl(uint32_t addr, uint32_t val) +{ + fprintf(stderr, "outl: port=0x%04"PRIx32", data=%08"PRIx32"\n", + addr, val); +} + +uint8_t cpu_inb(uint32_t addr) +{ + fprintf(stderr, "inb: port=0x%04"PRIx32"\n", addr); + return 0; +} + +uint16_t cpu_inw(uint32_t addr) +{ + fprintf(stderr, "inw: port=0x%04"PRIx32"\n", addr); + return 0; +} + +uint32_t cpu_inl(uint32_t addr) +{ + fprintf(stderr, "inl: port=0x%04"PRIx32"\n", addr); + return 0; +} + +void cpu_list_lock(void) +{ +} + +void cpu_list_unlock(void) +{ +} + +void mmap_lock(void) +{ +} + +void mmap_unlock(void) +{ +} + int cpu_get_pic_interrupt(CPUState *env) { return -1; @@ -44,26 +102,6 @@ static void set_idt(int n, unsigned int dpl) set_gate(idt_table + n, 0, dpl, 0, 0); } -void qemu_free(void *ptr) -{ - free(ptr); -} - -void *qemu_malloc(size_t size) -{ - return malloc(size); -} - -void *qemu_mallocz(size_t size) -{ - void *ptr; - ptr = qemu_malloc(size); - if (!ptr) - return NULL; - memset(ptr, 0, size); - return ptr; -} - void *qemu_vmalloc(size_t size) { return memalign(4096, size); @@ -74,17 +112,6 @@ void qemu_vfree(void *ptr) free(ptr); } -void qemu_printf(const char *fmt, ...) -{ - va_list ap; - va_start(ap, fmt); - vprintf(fmt, ap); - va_end(ap); -} - -/* XXX: this is a bug in helper2.c */ -int errno; - /**********************************************/ #define COM_BASE_ADDR 0x10100 @@ -99,7 +126,7 @@ static void usage(void) static inline uint8_t *seg_to_linear(unsigned int seg, unsigned int reg) { - return (uint8_t *)((seg << 4) + (reg & 0xffff)); + return (uint8_t *)(uintptr_t) ((seg << 4) + (reg & 0xffff)); } static inline void pushw(CPUState *env, int val) @@ -241,7 +268,7 @@ int main(int argc, char **argv) case EXCP0D_GPF: { int int_num, ah; - int_num = *(uint8_t *)(env->segs[R_CS].base + env->eip + 1); + int_num = *(uint8_t *)(uintptr_t) (env->segs[R_CS].base + env->eip + 1); if (int_num != 0x21) goto unknown_int; ah = (env->regs[R_EAX] >> 8) & 0xff; -- 1.7.3.2