/* * UniCore32 execution defines * * Copyright (C) 2010-2011 GUAN Xue-tao * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. */ #ifndef __UC32_EXEC_H__ #define __UC32_EXEC_H__ #include "config.h" #include "dyngen-exec.h" register struct CPUState_UniCore32 *env asm(AREG0); #include "cpu.h" #include "exec-all.h" static inline void env_to_regs(void) { } static inline void regs_to_env(void) { } static inline int cpu_has_work(CPUState *env) { return env->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_EXITTB); } static inline int cpu_halted(CPUState *env) { if (!env->halted) { return 0; } /* An interrupt wakes the CPU even if the I and R ASR bits are set. We use EXITTB to silently wake CPU without causing an actual interrupt. */ if (cpu_has_work(env)) { env->halted = 0; return 0; } return EXCP_HALTED; } #endif /* __UC32_EXEC_H__ */