 d720b93d0b
			
		
	
	
		d720b93d0b
		
	
	
	
	
		
			
			git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@745 c046a42c-6fe2-441c-8c8c-71466251a162
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef CPU_SPARC_H
 | |
| #define CPU_SPARC_H
 | |
| 
 | |
| #define TARGET_LONG_BITS 32
 | |
| 
 | |
| #include "cpu-defs.h"
 | |
| 
 | |
| /*#define EXCP_INTERRUPT 0x100*/
 | |
| 
 | |
| /* trap definitions */
 | |
| #define TT_ILL_INSN 0x02
 | |
| #define TT_WIN_OVF  0x05
 | |
| #define TT_WIN_UNF  0x06 
 | |
| #define TT_DIV_ZERO 0x2a
 | |
| #define TT_TRAP     0x80
 | |
| 
 | |
| #define PSR_NEG   (1<<23)
 | |
| #define PSR_ZERO  (1<<22)
 | |
| #define PSR_OVF   (1<<21)
 | |
| #define PSR_CARRY (1<<20)
 | |
| 
 | |
| #define NWINDOWS  32
 | |
| 
 | |
| typedef struct CPUSPARCState {
 | |
|     uint32_t gregs[8]; /* general registers */
 | |
|     uint32_t *regwptr; /* pointer to current register window */
 | |
|     double   *regfptr; /* floating point registers */
 | |
|     uint32_t pc;       /* program counter */
 | |
|     uint32_t npc;      /* next program counter */
 | |
|     uint32_t sp;       /* stack pointer */
 | |
|     uint32_t y;        /* multiply/divide register */
 | |
|     uint32_t psr;      /* processor state register */
 | |
|     uint32_t T2;
 | |
|     uint32_t cwp;      /* index of current register window (extracted
 | |
|                           from PSR) */
 | |
|     uint32_t wim;      /* window invalid mask */
 | |
|     jmp_buf  jmp_env;
 | |
|     int user_mode_only;
 | |
|     int exception_index;
 | |
|     int interrupt_index;
 | |
|     int interrupt_request;
 | |
|     struct TranslationBlock *current_tb;
 | |
|     void *opaque;
 | |
|     /* NOTE: we allow 8 more registers to handle wrapping */
 | |
|     uint32_t regbase[NWINDOWS * 16 + 8];
 | |
| 
 | |
|     /* in order to avoid passing too many arguments to the memory
 | |
|        write helpers, we store some rarely used information in the CPU
 | |
|        context) */
 | |
|     unsigned long mem_write_pc; /* host pc at which the memory was
 | |
|                                    written */
 | |
|     unsigned long mem_write_vaddr; /* target virtual addr at which the
 | |
|                                       memory was written */
 | |
| } CPUSPARCState;
 | |
| 
 | |
| CPUSPARCState *cpu_sparc_init(void);
 | |
| int cpu_sparc_exec(CPUSPARCState *s);
 | |
| int cpu_sparc_close(CPUSPARCState *s);
 | |
| 
 | |
| struct siginfo;
 | |
| int cpu_sparc_signal_handler(int hostsignum, struct siginfo *info, void *puc);
 | |
| void cpu_sparc_dump_state(CPUSPARCState *env, FILE *f, int flags);
 | |
| 
 | |
| #define TARGET_PAGE_BITS 13
 | |
| #include "cpu-all.h"
 | |
| 
 | |
| #endif
 |