diff options
Diffstat (limited to 'sim/m32c/cpu.h')
-rw-r--r-- | sim/m32c/cpu.h | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/sim/m32c/cpu.h b/sim/m32c/cpu.h deleted file mode 100644 index 3daa733..0000000 --- a/sim/m32c/cpu.h +++ /dev/null @@ -1,224 +0,0 @@ -/* cpu.h --- declarations for the M32C core. - -Copyright (C) 2005 Free Software Foundation, Inc. -Contributed by Red Hat, Inc. - -This file is part of the GNU simulators. - -The GNU simulators are free software; you can redistribute them and/or -modify them under the terms of the GNU General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU simulators are distributed in the hope that they will be -useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License -along with the GNU simulators; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -02110-1301, USA */ - - -extern int verbose; -extern int trace; -extern int enable_counting; - -typedef unsigned char QI; -typedef unsigned short HI; -typedef unsigned long SI; -typedef unsigned long long DI; - -#define CPU_R8C 0x11 -#define CPU_M16C 0x12 -#define CPU_M32CM 0x23 -#define CPU_M32C 0x24 -extern int m32c_cpu; -void m32c_set_cpu (int cpu); - -#define A16 (m32c_cpu & 0x10) -#define A24 (m32c_cpu & 0x20) - -typedef struct -{ - HI r_r0; - HI r_r2; - HI r_r1; - HI r_r3; - SI r_a0; - SI r_a1; - SI r_sb; - SI r_fb; -} reg_bank_type; - -typedef struct -{ - reg_bank_type r[2]; - QI r_intbh; - HI r_intbl; - SI r_usp; - SI r_isp; - SI r_pc; - HI r_flags; -} regs_type; - -extern regs_type regs; -extern int addr_mask; -extern int membus_mask; - -#define FLAGBIT_C 0x0001 -#define FLAGBIT_D 0x0002 -#define FLAGBIT_Z 0x0004 -#define FLAGBIT_S 0x0008 -#define FLAGBIT_B 0x0010 -#define FLAGBIT_O 0x0020 -#define FLAGBIT_I 0x0040 -#define FLAGBIT_U 0x0080 - -#define REG_BANK (regs.r_flags & FLAG_B ? 1 : 0) - -typedef enum -{ - mem, - r0, r0h, r0l, - r1, r1h, r1l, - r2, r2r0, - r3, r3r1, - r3r1r2r0, - r3r2r1r0, - a0, - a1, a1a0, - sb, fb, - intb, intbl, intbh, - sp, usp, isp, pc, flags, - num_regs -} reg_id; - -extern char *reg_names[]; -extern int reg_bytes[]; - -extern unsigned int b2mask[]; -extern unsigned int b2signbit[]; -extern int b2maxsigned[]; -extern int b2minsigned[]; - -void init_regs (void); -void stack_heap_stats (void); -void set_pointer_width (int bytes); -unsigned int get_reg (reg_id id); -DI get_reg_ll (reg_id id); -void put_reg (reg_id id, unsigned int value); -void put_reg_ll (reg_id id, DI value); - -void set_flags (int mask, int newbits); -void set_oszc (int value, int bytes, int c); -void set_szc (int value, int bytes, int c); -void set_osz (int value, int bytes); -void set_sz (int value, int bytes); -void set_zc (int z, int c); -void set_c (int c); - -const char *bits (int v, int b); - -typedef struct -{ - QI bytes; - QI mem; - HI mask; - union - { - unsigned int addr; - reg_id reg; - } u; -} srcdest; - -void decode_indirect (int src_indirect, int dest_indirect); -void decode_index (int src_addend, int dest_addend); - -/* r8c */ -srcdest decode_srcdest4 (int destcode, int bw); -srcdest decode_dest3 (int destcode, int bw); -srcdest decode_src2 (int srccode, int bw, int d); -srcdest decode_dest1 (int destcode, int bw); -srcdest decode_jumpdest (int destcode, int w); -srcdest decode_cr (int crcode); -srcdest decode_cr_b (int crcode, int bank); -#define CR_B_DCT0 0 -#define CR_B_INTB 1 -#define CR_B_DMA0 2 - -/* m32c */ -srcdest decode_dest23 (int ddd, int dd, int bytes); -srcdest decode_src23 (int sss, int ss, int bytes); -srcdest decode_src3 (int sss, int bytes); -srcdest decode_dest2 (int dd, int bytes); - -srcdest widen_sd (srcdest sd); -srcdest reg_sd (reg_id reg); - -/* Mask has the one appropriate bit set. */ -srcdest decode_bit (int destcode); -srcdest decode_bit11 (int op0); -int get_bit (srcdest sd); -void put_bit (srcdest sd, int val); -int get_bit2 (srcdest sd, int bit); -void put_bit2 (srcdest sd, int bit, int val); - -int get_src (srcdest sd); -void put_dest (srcdest sd, int value); - -int condition_true (int cond_id); - -#define FLAG(f) (regs.r_flags & f ? 1 : 0) -#define FLAG_C FLAG(FLAGBIT_C) -#define FLAG_D FLAG(FLAGBIT_D) -#define FLAG_Z FLAG(FLAGBIT_Z) -#define FLAG_S FLAG(FLAGBIT_S) -#define FLAG_B FLAG(FLAGBIT_B) -#define FLAG_O FLAG(FLAGBIT_O) -#define FLAG_I FLAG(FLAGBIT_I) -#define FLAG_U FLAG(FLAGBIT_U) - -/* Instruction step return codes. - Suppose one of the decode_* functions below returns a value R: - - If M32C_STEPPED (R), then the single-step completed normally. - - If M32C_HIT_BREAK (R), then the program hit a breakpoint. - - If M32C_EXITED (R), then the program has done an 'exit' system - call, and the exit code is M32C_EXIT_STATUS (R). - - If M32C_STOPPED (R), then a signal (number M32C_STOP_SIG (R)) was - generated. - - For building step return codes: - - M32C_MAKE_STEPPED is the return code for finishing a normal step. - - M32C_MAKE_HIT_BREAK is the return code for hitting a breakpoint. - - M32C_MAKE_EXITED (C) is the return code for exiting with status C. - - M32C_MAKE_STOPPED (S) is the return code for stopping on signal S. */ -#define M32C_MAKE_STEPPED() (0) -#define M32C_MAKE_HIT_BREAK() (1) -#define M32C_MAKE_EXITED(c) (((int) (c) << 8) + 2) -#define M32C_MAKE_STOPPED(s) (((int) (s) << 8) + 3) - -#define M32C_STEPPED(r) ((r) == M32C_MAKE_STEPPED ()) -#define M32C_HIT_BREAK(r) ((r) == M32C_MAKE_HIT_BREAK ()) -#define M32C_EXITED(r) (((r) & 0xff) == 2) -#define M32C_EXIT_STATUS(r) ((r) >> 8) -#define M32C_STOPPED(r) (((r) & 0xff) == 3) -#define M32C_STOP_SIG(r) ((r) >> 8) - -/* The step result for the current step. Global to allow - communication between the stepping function and the system - calls. */ -extern int step_result; - -/* Used to detect heap/stack collisions */ -extern unsigned int heaptop; -extern unsigned int heapbottom; - -/* Points to one of the below functions, set by m32c_load(). */ -extern int (*decode_opcode) (); - -extern int decode_r8c (); -extern int decode_m32c (); - -extern void trace_register_changes (); |