Revision a541f297 target-ppc/cpu.h
b/target-ppc/cpu.h | ||
---|---|---|
20 | 20 |
#if !defined (__CPU_PPC_H__) |
21 | 21 |
#define __CPU_PPC_H__ |
22 | 22 |
|
23 |
#include <endian.h> |
|
24 |
#include <asm/byteorder.h> |
|
25 |
|
|
26 | 23 |
#define TARGET_LONG_BITS 32 |
27 | 24 |
|
28 | 25 |
#include "cpu-defs.h" |
... | ... | |
157 | 154 |
int error_code; |
158 | 155 |
int access_type; /* when a memory exception occurs, the access |
159 | 156 |
type is stored here */ |
157 |
#if 0 /* TODO */ |
|
158 |
uint32_t pending_exceptions; /* For external & decr exception, |
|
159 |
* that can be delayed */ |
|
160 |
#else |
|
160 | 161 |
uint32_t exceptions; /* exception queue */ |
161 |
uint32_t errors[16]; |
|
162 |
uint32_t errors[32]; |
|
163 |
#endif |
|
162 | 164 |
int user_mode_only; /* user mode only simulation */ |
163 | 165 |
struct TranslationBlock *current_tb; /* currently executing TB */ |
164 | 166 |
/* soft mmu support */ |
165 |
/* 0 = kernel, 1 = user */ |
|
167 |
/* 0 = kernel, 1 = user (may have 2 = kernel code, 3 = user code ?) */
|
|
166 | 168 |
CPUTLBEntry tlb_read[2][CPU_TLB_SIZE]; |
167 | 169 |
CPUTLBEntry tlb_write[2][CPU_TLB_SIZE]; |
170 |
|
|
171 |
/* ice debug support */ |
|
172 |
uint32_t breakpoints[MAX_BREAKPOINTS]; |
|
173 |
int nb_breakpoints; |
|
174 |
int brkstate; |
|
175 |
int singlestep_enabled; |
|
176 |
|
|
168 | 177 |
/* user data */ |
169 | 178 |
void *opaque; |
170 | 179 |
} CPUPPCState; |
... | ... | |
179 | 188 |
int cpu_ppc_signal_handler(int host_signum, struct siginfo *info, |
180 | 189 |
void *puc); |
181 | 190 |
|
182 |
void cpu_ppc_dump_state(CPUPPCState *env, FILE *f, int flags);
|
|
191 |
void do_interrupt (CPUPPCState *env);
|
|
183 | 192 |
void cpu_loop_exit(void); |
193 |
|
|
194 |
void cpu_ppc_dump_state(CPUPPCState *env, FILE *f, int flags); |
|
184 | 195 |
void dump_stack (CPUPPCState *env); |
185 |
uint32_t _load_xer (void); |
|
186 |
void _store_xer (uint32_t value); |
|
187 |
uint32_t _load_msr (void); |
|
188 |
void _store_msr (uint32_t value); |
|
189 |
void do_interrupt (CPUPPCState *env); |
|
196 |
|
|
197 |
uint32_t _load_xer (CPUPPCState *env); |
|
198 |
void _store_xer (CPUPPCState *env, uint32_t value); |
|
199 |
uint32_t _load_msr (CPUPPCState *env); |
|
200 |
void _store_msr (CPUPPCState *env, uint32_t value); |
|
201 |
|
|
202 |
void PPC_init_hw (uint32_t mem_size, |
|
203 |
uint32_t kernel_addr, uint32_t kernel_size, |
|
204 |
uint32_t stack_addr, int boot_device, |
|
205 |
const unsigned char *initrd_file); |
|
190 | 206 |
|
191 | 207 |
#define TARGET_PAGE_BITS 12 |
192 | 208 |
#include "cpu-all.h" |
... | ... | |
277 | 293 |
#define TARGET_PAGE_BITS 12 |
278 | 294 |
#include "cpu-all.h" |
279 | 295 |
|
280 |
CPUPPCState *cpu_ppc_init(void); |
|
281 |
int cpu_ppc_exec(CPUPPCState *s); |
|
282 |
void cpu_ppc_close(CPUPPCState *s); |
|
283 |
void cpu_ppc_dump_state(CPUPPCState *env, FILE *f, int flags); |
|
284 |
void PPC_init_hw (CPUPPCState *env, uint32_t mem_size, |
|
285 |
uint32_t kernel_addr, uint32_t kernel_size, |
|
286 |
uint32_t stack_addr, int boot_device); |
|
287 |
|
|
288 | 296 |
/* Memory access type : |
289 | 297 |
* may be needed for precise access rights control and precise exceptions. |
290 | 298 |
*/ |
... | ... | |
351 | 359 |
/* flags for EXCP_DSI */ |
352 | 360 |
EXCP_DSI_DIRECT = 0x10, |
353 | 361 |
EXCP_DSI_STORE = 0x20, |
354 |
EXCP_ECXW = 0x40,
|
|
362 |
EXCP_DSI_ECXW = 0x40,
|
|
355 | 363 |
/* Exception subtypes for EXCP_ISI */ |
356 | 364 |
EXCP_ISI_TRANSLATE = 0x01, /* Code address can't be translated */ |
357 | 365 |
EXCP_ISI_NOEXEC = 0x02, /* Try to fetch from a data segment */ |
358 | 366 |
EXCP_ISI_GUARD = 0x03, /* Fetch from guarded memory */ |
359 | 367 |
EXCP_ISI_PROT = 0x04, /* Memory protection violation */ |
368 |
EXCP_ISI_DIRECT = 0x05, /* Trying to fetch from * |
|
369 |
* a direct store segment */ |
|
360 | 370 |
/* Exception subtypes for EXCP_ALIGN */ |
361 | 371 |
EXCP_ALIGN_FP = 0x01, /* FP alignment exception */ |
362 | 372 |
EXCP_ALIGN_LST = 0x02, /* Unaligned mult/extern load/store */ |
Also available in: Unified diff