]>
Commit | Line | Data |
---|---|---|
7a3f1944 FB |
1 | #ifndef EXEC_SPARC_H |
2 | #define EXEC_SPARC_H 1 | |
3475187d | 3 | #include "config.h" |
8294eba1 | 4 | #include "dyngen-exec.h" |
7a3f1944 FB |
5 | |
6 | register struct CPUSPARCState *env asm(AREG0); | |
3475187d | 7 | |
e8af50a3 FB |
8 | #define DT0 (env->dt0) |
9 | #define DT1 (env->dt1) | |
1f587329 BS |
10 | #define QT0 (env->qt0) |
11 | #define QT1 (env->qt1) | |
7a3f1944 FB |
12 | |
13 | #include "cpu.h" | |
14 | #include "exec-all.h" | |
15 | ||
0d1a29f9 FB |
16 | static inline void env_to_regs(void) |
17 | { | |
18 | } | |
19 | ||
20 | static inline void regs_to_env(void) | |
21 | { | |
22 | } | |
23 | ||
91736d37 | 24 | /* op_helper.c */ |
f2bc7e7f | 25 | void do_interrupt(CPUState *env); |
9d893301 | 26 | |
5210977a IK |
27 | static inline int cpu_interrupts_enabled(CPUState *env1) |
28 | { | |
29 | #if !defined (TARGET_SPARC64) | |
30 | if (env1->psret != 0) | |
31 | return 1; | |
32 | #else | |
33 | if (env1->pstate & PS_IE) | |
34 | return 1; | |
35 | #endif | |
36 | ||
37 | return 0; | |
38 | } | |
39 | ||
6a4955a8 AL |
40 | static inline int cpu_has_work(CPUState *env1) |
41 | { | |
42 | return (env1->interrupt_request & CPU_INTERRUPT_HARD) && | |
5210977a | 43 | cpu_interrupts_enabled(env1); |
6a4955a8 AL |
44 | } |
45 | ||
46 | ||
22548760 BS |
47 | static inline int cpu_halted(CPUState *env1) { |
48 | if (!env1->halted) | |
bfed01fc | 49 | return 0; |
6a4955a8 | 50 | if (cpu_has_work(env1)) { |
22548760 | 51 | env1->halted = 0; |
bfed01fc TS |
52 | return 0; |
53 | } | |
54 | return EXCP_HALTED; | |
55 | } | |
56 | ||
7a3f1944 | 57 | #endif |