|
|
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.