169163fbbSRichard Henderson /* 269163fbbSRichard Henderson * Helpers for system instructions. 369163fbbSRichard Henderson * 469163fbbSRichard Henderson * Copyright (c) 2007 Jocelyn Mayer 569163fbbSRichard Henderson * 669163fbbSRichard Henderson * This library is free software; you can redistribute it and/or 769163fbbSRichard Henderson * modify it under the terms of the GNU Lesser General Public 869163fbbSRichard Henderson * License as published by the Free Software Foundation; either 9d6ea4236SChetan Pant * version 2.1 of the License, or (at your option) any later version. 1069163fbbSRichard Henderson * 1169163fbbSRichard Henderson * This library is distributed in the hope that it will be useful, 1269163fbbSRichard Henderson * but WITHOUT ANY WARRANTY; without even the implied warranty of 1369163fbbSRichard Henderson * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1469163fbbSRichard Henderson * Lesser General Public License for more details. 1569163fbbSRichard Henderson * 1669163fbbSRichard Henderson * You should have received a copy of the GNU Lesser General Public 1769163fbbSRichard Henderson * License along with this library; if not, see <http://www.gnu.org/licenses/>. 1869163fbbSRichard Henderson */ 1969163fbbSRichard Henderson 20e2e5e114SPeter Maydell #include "qemu/osdep.h" 2169163fbbSRichard Henderson #include "cpu.h" 22*6ff5da16SPhilippe Mathieu-Daudé #include "exec/cputlb.h" 23548c9609SAlex Bennée #include "exec/tb-flush.h" 242ef6175aSRichard Henderson #include "exec/helper-proto.h" 2532cad1ffSPhilippe Mathieu-Daudé #include "system/runstate.h" 2632cad1ffSPhilippe Mathieu-Daudé #include "system/system.h" 271de7afc9SPaolo Bonzini #include "qemu/timer.h" 2869163fbbSRichard Henderson 2969163fbbSRichard Henderson 3069163fbbSRichard Henderson /* PALcode support special instructions */ helper_tbia(CPUAlphaState * env)3169163fbbSRichard Hendersonvoid helper_tbia(CPUAlphaState *env) 3269163fbbSRichard Henderson { 331c7ad260SRichard Henderson tlb_flush(env_cpu(env)); 3469163fbbSRichard Henderson } 3569163fbbSRichard Henderson helper_tbis(CPUAlphaState * env,uint64_t p)3669163fbbSRichard Hendersonvoid helper_tbis(CPUAlphaState *env, uint64_t p) 3769163fbbSRichard Henderson { 381c7ad260SRichard Henderson tlb_flush_page(env_cpu(env), p); 3969163fbbSRichard Henderson } 4069163fbbSRichard Henderson helper_tb_flush(CPUAlphaState * env)41a9ead832SRichard Hendersonvoid helper_tb_flush(CPUAlphaState *env) 42a9ead832SRichard Henderson { 431c7ad260SRichard Henderson tb_flush(env_cpu(env)); 44a9ead832SRichard Henderson } 45a9ead832SRichard Henderson helper_halt(uint64_t restart)4669163fbbSRichard Hendersonvoid helper_halt(uint64_t restart) 4769163fbbSRichard Henderson { 4869163fbbSRichard Henderson if (restart) { 49cf83f140SEric Blake qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET); 5069163fbbSRichard Henderson } else { 51cf83f140SEric Blake qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN); 5269163fbbSRichard Henderson } 5369163fbbSRichard Henderson } 5469163fbbSRichard Henderson helper_get_vmtime(void)5519e0cbb8SRichard Hendersonuint64_t helper_get_vmtime(void) 5619e0cbb8SRichard Henderson { 57bc72ad67SAlex Bligh return qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL); 5819e0cbb8SRichard Henderson } 5919e0cbb8SRichard Henderson helper_get_walltime(void)6019e0cbb8SRichard Hendersonuint64_t helper_get_walltime(void) 6169163fbbSRichard Henderson { 62884f17c2SAlex Bligh return qemu_clock_get_ns(rtc_clock); 6369163fbbSRichard Henderson } 6469163fbbSRichard Henderson helper_set_alarm(CPUAlphaState * env,uint64_t expire)6569163fbbSRichard Hendersonvoid helper_set_alarm(CPUAlphaState *env, uint64_t expire) 6669163fbbSRichard Henderson { 671c7ad260SRichard Henderson AlphaCPU *cpu = env_archcpu(env); 68c9245853SAndreas Färber 6969163fbbSRichard Henderson if (expire) { 7069163fbbSRichard Henderson env->alarm_expire = expire; 71bc72ad67SAlex Bligh timer_mod(cpu->alarm_timer, expire); 7269163fbbSRichard Henderson } else { 73bc72ad67SAlex Bligh timer_del(cpu->alarm_timer); 7469163fbbSRichard Henderson } 7569163fbbSRichard Henderson } 76