From 19e0cbb82ffab7220cdbcc78ab2c1dac823ce4e3 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 16 Jul 2013 06:45:57 -0700 Subject: target-alpha: Move alarm to vm_clock Basing the alarm off the rtc_clock was silly. It leads to horrible spinning in the guest after being suspended and resumed, as it tries to catch up with lost ticks. This requires adding an accessor for reading the vm_clock too. Signed-off-by: Richard Henderson --- hw/alpha/typhoon.c | 2 +- target-alpha/helper.h | 3 ++- target-alpha/sys_helper.c | 7 ++++++- target-alpha/translate.c | 12 ++++++++---- 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/hw/alpha/typhoon.c b/hw/alpha/typhoon.c index 3d7a1cd8e8..b7fb04406c 100644 --- a/hw/alpha/typhoon.c +++ b/hw/alpha/typhoon.c @@ -693,7 +693,7 @@ PCIBus *typhoon_init(ram_addr_t ram_size, ISABus **isa_bus, AlphaCPU *cpu = cpus[i]; s->cchip.cpu[i] = cpu; if (cpu != NULL) { - cpu->alarm_timer = qemu_new_timer_ns(rtc_clock, + cpu->alarm_timer = qemu_new_timer_ns(vm_clock, typhoon_alarm_timer, (void *)((uintptr_t)s + i)); } diff --git a/target-alpha/helper.h b/target-alpha/helper.h index 3321fde916..0e425cfc08 100644 --- a/target-alpha/helper.h +++ b/target-alpha/helper.h @@ -114,7 +114,8 @@ DEF_HELPER_FLAGS_2(tbis, TCG_CALL_NO_RWG, void, env, i64) DEF_HELPER_1(halt, void, i64); -DEF_HELPER_FLAGS_0(get_time, TCG_CALL_NO_RWG, i64) +DEF_HELPER_FLAGS_0(get_vmtime, TCG_CALL_NO_RWG, i64) +DEF_HELPER_FLAGS_0(get_walltime, TCG_CALL_NO_RWG, i64) DEF_HELPER_FLAGS_2(set_alarm, TCG_CALL_NO_RWG, void, env, i64) #endif diff --git a/target-alpha/sys_helper.c b/target-alpha/sys_helper.c index 339501af90..bd94597d36 100644 --- a/target-alpha/sys_helper.c +++ b/target-alpha/sys_helper.c @@ -70,7 +70,12 @@ void helper_halt(uint64_t restart) } } -uint64_t helper_get_time(void) +uint64_t helper_get_vmtime(void) +{ + return qemu_get_clock_ns(vm_clock); +} + +uint64_t helper_get_walltime(void) { return qemu_get_clock_ns(rtc_clock); } diff --git a/target-alpha/translate.c b/target-alpha/translate.c index dd7f0fbf94..5558b728dd 100644 --- a/target-alpha/translate.c +++ b/target-alpha/translate.c @@ -1634,15 +1634,19 @@ static ExitStatus gen_mfpr(int ra, int regno) return NO_EXIT; } - if (regno == 250) { - /* WALL_TIME */ + /* Special help for VMTIME and WALLTIME. */ + if (regno == 250 || regno == 249) { + void (*helper)(TCGv) = gen_helper_get_walltime; + if (regno == 249) { + helper = gen_helper_get_vmtime; + } if (use_icount) { gen_io_start(); - gen_helper_get_time(cpu_ir[ra]); + helper(cpu_ir[ra]); gen_io_end(); return EXIT_PC_STALE; } else { - gen_helper_get_time(cpu_ir[ra]); + helper(cpu_ir[ra]); return NO_EXIT; } } -- cgit v1.2.3 From b957a1b03cfd56134519ebc01ba8fe1b166c0c84 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 16 Jul 2013 06:48:28 -0700 Subject: pc-bios: Update palcode-clipper Update image to c87a92639b28ac42bc8f6c67443543b405dc479b, incorporating changes for vm_time. Signed-off-by: Richard Henderson --- .gitmodules | 2 +- pc-bios/README | 2 +- pc-bios/palcode-clipper | Bin 185703 -> 133550 bytes roms/qemu-palcode | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index b426ea605a..d7e3f3c7cd 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,7 +15,7 @@ url = git://git.qemu.org/openbios.git [submodule "roms/qemu-palcode"] path = roms/qemu-palcode - url = git://repo.or.cz/qemu-palcode.git + url = git://github.com/rth7680/qemu-palcode.git [submodule "roms/sgabios"] path = roms/sgabios url = git://git.qemu.org/sgabios.git diff --git a/pc-bios/README b/pc-bios/README index 030d92a049..53b52894f7 100644 --- a/pc-bios/README +++ b/pc-bios/README @@ -40,4 +40,4 @@ git://repo.or.cz/s390-tools.git - The sources for the Alpha palcode image is available from: - git://repo.or.cz/qemu-palcode.git + git://github.com/rth7680/qemu-palcode.git diff --git a/pc-bios/palcode-clipper b/pc-bios/palcode-clipper index a92372c107..9956340cd1 100755 Binary files a/pc-bios/palcode-clipper and b/pc-bios/palcode-clipper differ diff --git a/roms/qemu-palcode b/roms/qemu-palcode index 7abb12f60e..c87a92639b 160000 --- a/roms/qemu-palcode +++ b/roms/qemu-palcode @@ -1 +1 @@ -Subproject commit 7abb12f60eb3069019e9497e193733d77d8f0722 +Subproject commit c87a92639b28ac42bc8f6c67443543b405dc479b -- cgit v1.2.3