|
|
1.1 ! root 1: /* ! 2: * Alpha emulation cpu run-time definitions for qemu. ! 3: * ! 4: * Copyright (c) 2007 Jocelyn Mayer ! 5: * ! 6: * This library is free software; you can redistribute it and/or ! 7: * modify it under the terms of the GNU Lesser General Public ! 8: * License as published by the Free Software Foundation; either ! 9: * version 2 of the License, or (at your option) any later version. ! 10: * ! 11: * This library is distributed in the hope that it will be useful, ! 12: * but WITHOUT ANY WARRANTY; without even the implied warranty of ! 13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! 14: * Lesser General Public License for more details. ! 15: * ! 16: * You should have received a copy of the GNU Lesser General Public ! 17: * License along with this library; if not, write to the Free Software ! 18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! 19: */ ! 20: ! 21: #if !defined (__ALPHA_EXEC_H__) ! 22: #define __ALPHA_EXEC_H__ ! 23: ! 24: #include "config.h" ! 25: ! 26: #include "dyngen-exec.h" ! 27: ! 28: #define TARGET_LONG_BITS 64 ! 29: ! 30: register struct CPUAlphaState *env asm(AREG0); ! 31: ! 32: #if TARGET_LONG_BITS > HOST_LONG_BITS ! 33: ! 34: /* no registers can be used */ ! 35: #define T0 (env->t0) ! 36: #define T1 (env->t1) ! 37: #define T2 (env->t2) ! 38: ! 39: #else ! 40: ! 41: register uint64_t T0 asm(AREG1); ! 42: register uint64_t T1 asm(AREG2); ! 43: register uint64_t T2 asm(AREG3); ! 44: ! 45: #endif /* TARGET_LONG_BITS > HOST_LONG_BITS */ ! 46: ! 47: #define PARAM(n) ((uint64_t)PARAM##n) ! 48: #define SPARAM(n) ((int32_t)PARAM##n) ! 49: #define FT0 (env->ft0) ! 50: #define FT1 (env->ft1) ! 51: #define FT2 (env->ft2) ! 52: #define FP_STATUS (env->fp_status) ! 53: ! 54: #if defined (DEBUG_OP) ! 55: #define RETURN() __asm__ __volatile__("nop" : : : "memory"); ! 56: #else ! 57: #define RETURN() __asm__ __volatile__("" : : : "memory"); ! 58: #endif ! 59: ! 60: #include "cpu.h" ! 61: #include "exec-all.h" ! 62: ! 63: #if !defined(CONFIG_USER_ONLY) ! 64: #include "softmmu_exec.h" ! 65: #endif /* !defined(CONFIG_USER_ONLY) */ ! 66: ! 67: static always_inline void env_to_regs(void) ! 68: { ! 69: } ! 70: ! 71: static always_inline void regs_to_env(void) ! 72: { ! 73: } ! 74: ! 75: int cpu_alpha_handle_mmu_fault (CPUState *env, uint64_t address, int rw, ! 76: int mmu_idx, int is_softmmu); ! 77: int cpu_alpha_mfpr (CPUState *env, int iprn, uint64_t *valp); ! 78: int cpu_alpha_mtpr (CPUState *env, int iprn, uint64_t val, uint64_t *oldvalp); ! 79: ! 80: void do_interrupt (CPUState *env); ! 81: ! 82: static always_inline int cpu_halted(CPUState *env) { ! 83: if (!env->halted) ! 84: return 0; ! 85: if (env->interrupt_request & CPU_INTERRUPT_HARD) { ! 86: env->halted = 0; ! 87: return 0; ! 88: } ! 89: return EXCP_HALTED; ! 90: } ! 91: ! 92: #endif /* !defined (__ALPHA_EXEC_H__) */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.