cpu_arm_instr.cc File Reference

Back to the index.

Macros | Functions | Variables
cpu_arm_instr.cc File Reference
#include "cpu_arm_instr_misc.cc"
#include "cpu_dyntrans.cc"

Go to the source code of this file.

Macros

#define Y(n)
 
#define cond_instr(n)   ( arm_cond_instr_ ## n [condition_code] )
 
#define DYNTRANS_TO_BE_TRANSLATED_HEAD
 
#define DYNTRANS_TO_BE_TRANSLATED_TAIL
 

Functions

 X (invalid)
 
 X (never)
 
 X (nop)
 
 X (b)
 
 Y (b) X(b_samepage)
 
 X (b_samepage__eq)
 
 X (b_samepage__ne)
 
 X (b_samepage__cs)
 
 X (b_samepage__cc)
 
 X (b_samepage__mi)
 
 X (b_samepage__pl)
 
 X (b_samepage__vs)
 
 X (b_samepage__vc)
 
 X (b_samepage__hi)
 
 X (b_samepage__ls)
 
 X (b_samepage__ge)
 
 X (b_samepage__lt)
 
 X (b_samepage__gt)
 
 X (b_samepage__le)
 
 X (bx)
 
 Y (bx) X(bx_trace)
 
 Y (bx_trace) X(bl)
 
 Y (bl) X(blx_imm)
 
 X (blx_reg)
 
 Y (blx_reg) X(bl_trace)
 
 Y (bl_trace) X(bl_samepage)
 
 Y (bl_samepage) X(bl_samepage_trace)
 
 Y (bl_samepage_trace) X(clz)
 
 Y (clz) X(mul)
 
 Y (mul) X(muls)
 
 Y (muls) X(mla)
 
 Y (mla) X(mlas)
 
 Y (mlas) X(mull)
 
 Y (mull) X(smulbb)
 
 Y (smulbb) X(smultb)
 
 Y (smultb) X(smulbt)
 
 Y (smulbt) X(smultt)
 
 Y (smultt) X(mov_reg_reg)
 
 Y (mov_reg_reg) X(mov_reg_pc)
 
 Y (mov_reg_pc) X(ret_trace)
 
 Y (ret_trace) X(ret)
 
 Y (ret) X(msr_imm)
 
 Y (msr_imm) X(msr)
 
 Y (msr) X(msr_imm_spsr)
 
 Y (msr_imm_spsr) X(msr_spsr)
 
 Y (msr_spsr) X(mrs)
 
 Y (mrs) X(mrs_spsr)
 
 Y (mrs_spsr) X(mcr_mrc)
 
 Y (mcr_mrc) X(cdp)
 
 Y (cdp) X(openfirmware)
 
 X (reboot)
 
 X (swi)
 
 Y (swi) X(bkpt)
 
 Y (bkpt) X(und)
 
 Y (und) X(swp)
 
 Y (swp) X(swpb)
 
 Y (swpb) extern void(*arm_load_store_instr[1024])(struct cpu *
 
struct arm_instr_call * X (store_w1_word_u1_p0_imm)
 
 X (store_w0_byte_u1_p0_imm)
 
 X (store_w0_word_u1_p0_imm)
 
 X (store_w0_word_u1_p1_imm)
 
 X (load_w0_word_u1_p0_imm)
 
 X (load_w0_word_u1_p1_imm)
 
 X (load_w1_word_u1_p0_imm)
 
 X (load_w0_byte_u1_p1_imm)
 
 X (load_w0_byte_u1_p1_reg)
 
 X (load_w1_byte_u1_p1_imm)
 
uint32_t arm_r_r3_t0_c0 (struct cpu *cpu, struct arm_instr_call *ic)
 
 X (cmps)
 
 X (teqs)
 
 X (tsts)
 
 X (sub)
 
 X (add)
 
 X (subs)
 
 X (eor_regshort)
 
 X (cmps_regshort)
 
void arm_pop (struct cpu *cpu, uint32_t *np, int p_bit, int u_bit, int s_bit, int w_bit, uint32_t iw)
 
void arm_push (struct cpu *cpu, uint32_t *np, int p_bit, int u_bit, int s_bit, int w_bit, uint16_t regs)
 
 X (bdt_load)
 
 Y (bdt_load) X(bdt_store)
 
 Y (bdt_store) extern uint32_t *multi_opcode[256]
 
 X (multi_0x08b15018)
 
 X (multi_0x08ac000c__ge)
 
 X (multi_0x08a05018)
 
 X (netbsd_memset)
 
 X (netbsd_memcpy)
 
 X (netbsd_cacheclean)
 
 X (netbsd_cacheclean2)
 
 X (netbsd_scanc)
 
 X (netbsd_idle)
 
 X (strlen)
 
 X (xchg)
 
 X (netbsd_copyin)
 
 X (netbsd_copyout)
 
 X (cmps0_beq_samepage)
 
 X (cmps_beq_samepage)
 
 X (cmps_0_beq)
 
 X (cmps_pos_beq)
 
 X (cmps_neg_beq)
 
 X (cmps0_bne_samepage)
 
 X (cmps_bne_samepage)
 
 X (cmps_bcc_samepage)
 
 X (cmps_reg_bcc_samepage)
 
 X (cmps_bhi_samepage)
 
 X (cmps_reg_bhi_samepage)
 
 X (cmps_bgt_samepage)
 
 X (cmps_ble_samepage)
 
 X (teqs_beq_samepage)
 
 X (tsts_lo_beq_samepage)
 
 X (teqs_bne_samepage)
 
 X (tsts_lo_bne_samepage)
 
 X (end_of_page)
 
void COMBINE() netbsd_memset (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_memcpy (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_cacheclean (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_cacheclean2 (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_scanc (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() strlen (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() xchg (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_copyin (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() netbsd_copyout (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
void COMBINE() beq_etc (struct cpu *cpu, struct arm_instr_call *ic, int low_addr)
 
 X (to_be_translated)
 

Variables

uint8_t condition_hi [16] = { 0,0,1,1, 0,0,0,0, 0,0,1,1, 0,0,0,0 }
 
uint8_t condition_ge [16] = { 1,0,1,0, 1,0,1,0, 0,1,0,1, 0,1,0,1 }
 
uint8_t condition_gt [16] = { 1,0,1,0, 0,0,0,0, 0,1,0,1, 0,0,0,0 }
 
void(* arm_cond_instr_b_samepage [16])(struct cpu *, struct arm_instr_call *)
 
void(* arm_load_store_instr_pc [1024])(struct cpu *, struct arm_instr_call *)
 
void(* arm_load_store_instr_3 [2048])(struct cpu *, struct arm_instr_call *)
 
void(* arm_load_store_instr_3_pc [2048])(struct cpu *, struct arm_instr_call *)
 
uint32_t(* arm_r [8192])(struct cpu *, struct arm_instr_call *)
 
void(* arm_dpi_instr [2 *2 *2 *16 *16])(struct cpu *, struct arm_instr_call *)
 
void(* arm_dpi_instr_regshort [2 *16 *16])(struct cpu *, struct arm_instr_call *)
 
void(** multi_opcode_f [256])(struct cpu *, struct arm_instr_call *)
 

Macro Definition Documentation

◆ cond_instr

#define cond_instr (   n)    ( arm_cond_instr_ ## n [condition_code] )

Definition at line 199 of file cpu_arm_instr.cc.

Referenced by X().

◆ DYNTRANS_TO_BE_TRANSLATED_HEAD

#define DYNTRANS_TO_BE_TRANSLATED_HEAD

◆ DYNTRANS_TO_BE_TRANSLATED_TAIL

#define DYNTRANS_TO_BE_TRANSLATED_TAIL

◆ Y

#define Y (   n)
Value:
void arm_instr_ ## n ## __eq(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (cpu->cd.arm.flags & ARM_F_Z) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __ne(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!(cpu->cd.arm.flags & ARM_F_Z)) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __cs(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (cpu->cd.arm.flags & ARM_F_C) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __cc(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!(cpu->cd.arm.flags & ARM_F_C)) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __mi(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (cpu->cd.arm.flags & ARM_F_N) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __pl(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!(cpu->cd.arm.flags & ARM_F_N)) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __vs(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (cpu->cd.arm.flags & ARM_F_V) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __vc(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!(cpu->cd.arm.flags & ARM_F_V)) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __hi(struct cpu *cpu, \
struct arm_instr_call *ic) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __ls(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!condition_hi[cpu->cd.arm.flags]) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __ge(struct cpu *cpu, \
struct arm_instr_call *ic) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __lt(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!condition_ge[cpu->cd.arm.flags]) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __gt(struct cpu *cpu, \
struct arm_instr_call *ic) \
arm_instr_ ## n (cpu, ic); } \
void arm_instr_ ## n ## __le(struct cpu *cpu, \
struct arm_instr_call *ic) \
{ if (!condition_gt[cpu->cd.arm.flags]) \
arm_instr_ ## n (cpu, ic); } \
void (*arm_cond_instr_ ## n [16])(struct cpu *, \
struct arm_instr_call *) = { \
arm_instr_ ## n ## __eq, arm_instr_ ## n ## __ne, \
arm_instr_ ## n ## __cs, arm_instr_ ## n ## __cc, \
arm_instr_ ## n ## __mi, arm_instr_ ## n ## __pl, \
arm_instr_ ## n ## __vs, arm_instr_ ## n ## __vc, \
arm_instr_ ## n ## __hi, arm_instr_ ## n ## __ls, \
arm_instr_ ## n ## __ge, arm_instr_ ## n ## __lt, \
arm_instr_ ## n ## __gt, arm_instr_ ## n ## __le, \
arm_instr_ ## n , arm_instr_never };
struct arm_instr_call * ic
union cpu::@1 cd
uint8_t condition_hi[16]
struct arm_cpu arm
Definition: cpu.h:441
#define ARM_F_V
Definition: cpu_arm.h:89
uint8_t condition_ge[16]
#define ARM_F_Z
Definition: cpu_arm.h:87
Definition: cpu.h:326
uint8_t condition_gt[16]
size_t flags
Definition: cpu_arm.h:174
#define ARM_F_N
Definition: cpu_arm.h:86
#define ARM_F_C
Definition: cpu_arm.h:88

Definition at line 132 of file cpu_arm_instr.cc.

Referenced by Y().

Function Documentation

◆ arm_pop()

void arm_pop ( struct cpu cpu,
uint32_t *  np,
int  p_bit,
int  u_bit,
int  s_bit,
int  w_bit,
uint32_t  iw 
)

◆ arm_push()

void arm_push ( struct cpu cpu,
uint32_t *  np,
int  p_bit,
int  u_bit,
int  s_bit,
int  w_bit,
uint16_t  regs 
)

◆ arm_r_r3_t0_c0()

uint32_t arm_r_r3_t0_c0 ( struct cpu cpu,
struct arm_instr_call *  ic 
)

Definition at line 20 of file tmp_arm_r0.cc.

Referenced by Y().

◆ beq_etc()

void COMBINE() beq_etc ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2443 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, cmps, and instr.

◆ netbsd_cacheclean()

void COMBINE() netbsd_cacheclean ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2263 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, and instr.

◆ netbsd_cacheclean2()

void COMBINE() netbsd_cacheclean2 ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2286 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, and instr.

◆ netbsd_copyin()

void COMBINE() netbsd_copyin ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

◆ netbsd_copyout()

void COMBINE() netbsd_copyout ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

◆ netbsd_memcpy()

void COMBINE() netbsd_memcpy ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2235 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, and instr.

◆ netbsd_memset()

void COMBINE() netbsd_memset ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2206 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, and instr.

◆ netbsd_scanc()

void COMBINE() netbsd_scanc ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

◆ strlen()

void COMBINE() strlen ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

◆ X() [1/73]

X ( invalid  )

Definition at line 208 of file cpu_arm_instr.cc.

References cpu::arm, ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, cpu::cd, fatal(), ic, and cpu::pc.

Referenced by Y().

◆ X() [2/73]

X ( never  )

◆ X() [3/73]

X ( nop  )

Definition at line 246 of file cpu_arm_instr.cc.

◆ X() [4/73]

X ( )

Definition at line 256 of file cpu_arm_instr.cc.

References ic, and cpu::pc.

◆ X() [5/73]

X ( b_samepage__eq  )

Definition at line 277 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_Z, cpu::cd, arm_cpu::flags, and ic.

◆ X() [6/73]

X ( b_samepage__ne  )

Definition at line 281 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_Z, cpu::cd, arm_cpu::flags, and ic.

◆ X() [7/73]

X ( b_samepage__cs  )

Definition at line 285 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_C, cpu::cd, arm_cpu::flags, and ic.

◆ X() [8/73]

X ( b_samepage__cc  )

Definition at line 289 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_C, cpu::cd, arm_cpu::flags, and ic.

◆ X() [9/73]

X ( b_samepage__mi  )

Definition at line 293 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, cpu::cd, arm_cpu::flags, and ic.

◆ X() [10/73]

X ( b_samepage__pl  )

Definition at line 297 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, cpu::cd, arm_cpu::flags, and ic.

◆ X() [11/73]

X ( b_samepage__vs  )

Definition at line 301 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_V, cpu::cd, arm_cpu::flags, and ic.

◆ X() [12/73]

X ( b_samepage__vc  )

Definition at line 305 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_V, cpu::cd, arm_cpu::flags, and ic.

◆ X() [13/73]

X ( b_samepage__hi  )

Definition at line 309 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [14/73]

X ( b_samepage__ls  )

Definition at line 314 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [15/73]

X ( b_samepage__ge  )

Definition at line 318 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [16/73]

X ( b_samepage__lt  )

Definition at line 323 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [17/73]

X ( b_samepage__gt  )

Definition at line 327 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [18/73]

X ( b_samepage__le  )

Definition at line 332 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::flags, and ic.

◆ X() [19/73]

X ( bx  )

Definition at line 353 of file cpu_arm_instr.cc.

References cpu::arm, ARM_FLAG_T, cpu::cd, arm_cpu::cpsr, ic, cpu::pc, and reg.

◆ X() [20/73]

X ( blx_reg  )

Definition at line 482 of file cpu_arm_instr.cc.

References cpu::arm, ARM_FLAG_T, ARM_LR, cpu::cd, arm_cpu::cpsr, ic, cpu::pc, arm_cpu::r, and reg.

◆ X() [21/73]

X ( reboot  )

Definition at line 962 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, cpu::n_translated_instrs, and cpu::running.

◆ X() [22/73]

X ( swi  )

Definition at line 973 of file cpu_arm_instr.cc.

References arm_exception(), ARM_EXCEPTION_SWI, ic, and cpu::pc.

◆ X() [23/73]

struct arm_instr_call* X ( store_w1_word_u1_p0_imm  )

◆ X() [24/73]

X ( store_w0_byte_u1_p0_imm  )

◆ X() [25/73]

X ( store_w0_word_u1_p0_imm  )

◆ X() [26/73]

X ( store_w0_word_u1_p1_imm  )

◆ X() [27/73]

X ( load_w0_word_u1_p0_imm  )

◆ X() [28/73]

X ( load_w0_word_u1_p1_imm  )

◆ X() [29/73]

X ( load_w1_word_u1_p0_imm  )

◆ X() [30/73]

X ( load_w0_byte_u1_p1_imm  )

◆ X() [31/73]

X ( load_w0_byte_u1_p1_reg  )

◆ X() [32/73]

X ( load_w1_byte_u1_p1_imm  )

◆ X() [33/73]

X ( cmps  )

◆ X() [34/73]

X ( teqs  )

◆ X() [35/73]

X ( tsts  )

◆ X() [36/73]

X ( sub  )

◆ X() [37/73]

X ( add  )

◆ X() [38/73]

X ( subs  )

◆ X() [39/73]

X ( eor_regshort  )

◆ X() [40/73]

X ( cmps_regshort  )

◆ X() [41/73]

X ( bdt_load  )

◆ X() [42/73]

X ( multi_0x08b15018  )

◆ X() [43/73]

X ( multi_0x08ac000c__ge  )

◆ X() [44/73]

X ( multi_0x08a05018  )

◆ X() [45/73]

X ( netbsd_memset  )

◆ X() [46/73]

X ( netbsd_memcpy  )

◆ X() [47/73]

Definition at line 1578 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, cpu::n_translated_instrs, and arm_cpu::r.

◆ X() [48/73]

Definition at line 1599 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, cpu::n_translated_instrs, and arm_cpu::r.

◆ X() [49/73]

X ( netbsd_scanc  )

◆ X() [50/73]

X ( netbsd_idle  )

◆ X() [51/73]

X ( strlen  )

◆ X() [52/73]

X ( xchg  )

Definition at line 1748 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, cpu::n_translated_instrs, and reg.

◆ X() [53/73]

X ( netbsd_copyin  )

◆ X() [54/73]

X ( netbsd_copyout  )

◆ X() [55/73]

X ( cmps0_beq_samepage  )

Definition at line 1831 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_C, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [56/73]

X ( cmps_beq_samepage  )

◆ X() [57/73]

X ( cmps_0_beq  )

◆ X() [58/73]

X ( cmps_pos_beq  )

◆ X() [59/73]

X ( cmps_neg_beq  )

◆ X() [60/73]

X ( cmps0_bne_samepage  )

Definition at line 1929 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_C, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [61/73]

X ( cmps_bne_samepage  )

◆ X() [62/73]

X ( cmps_bcc_samepage  )

◆ X() [63/73]

X ( cmps_reg_bcc_samepage  )

◆ X() [64/73]

X ( cmps_bhi_samepage  )

◆ X() [65/73]

X ( cmps_reg_bhi_samepage  )

◆ X() [66/73]

X ( cmps_bgt_samepage  )

◆ X() [67/73]

X ( cmps_ble_samepage  )

◆ X() [68/73]

X ( teqs_beq_samepage  )

Definition at line 2103 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [69/73]

X ( tsts_lo_beq_samepage  )

Definition at line 2124 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [70/73]

X ( teqs_bne_samepage  )

Definition at line 2142 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [71/73]

X ( tsts_lo_bne_samepage  )

Definition at line 2165 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, cpu::n_translated_instrs, and reg.

◆ X() [72/73]

X ( end_of_page  )

◆ X() [73/73]

X ( to_be_translated  )

◆ xchg()

void COMBINE() xchg ( struct cpu cpu,
struct arm_instr_call *  ic,
int  low_addr 
)

Definition at line 2356 of file cpu_arm_instr.cc.

References ARM_IC_ENTRIES_PER_PAGE, ARM_INSTR_ALIGNMENT_SHIFT, and instr.

◆ Y() [1/37]

Y ( )

Definition at line 263 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, and ic.

◆ Y() [2/37]

Y ( bx  )

Definition at line 376 of file cpu_arm_instr.cc.

References cpu::arm, ARM_FLAG_T, ARM_LR, cpu::cd, arm_cpu::cpsr, cpu::pc, and arm_cpu::r.

◆ Y() [3/37]

Y ( bx_trace  )

Definition at line 409 of file cpu_arm_instr.cc.

References cpu::arm, ARM_LR, cpu::cd, ic, cpu::pc, and arm_cpu::r.

◆ Y() [4/37]

Y ( bl  )

◆ Y() [5/37]

Y ( blx_reg  )

Definition at line 508 of file cpu_arm_instr.cc.

References cpu::arm, ARM_LR, cpu::cd, cpu_functioncall_trace(), ic, cpu::pc, and arm_cpu::r.

◆ Y() [6/37]

Y ( bl_trace  )

Definition at line 529 of file cpu_arm_instr.cc.

References cpu::arm, ARM_LR, cpu::cd, ic, cpu::pc, and arm_cpu::r.

◆ Y() [7/37]

Y ( bl_samepage  )

◆ Y() [8/37]

Y ( bl_samepage_trace  )

Definition at line 569 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [9/37]

Y ( clz  )

Definition at line 599 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [10/37]

Y ( mul  )

Definition at line 613 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, ic, and reg.

◆ Y() [11/37]

Y ( muls  )

Definition at line 625 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, ic, and arm_cpu::r.

◆ Y() [12/37]

Y ( mla  )

Definition at line 643 of file cpu_arm_instr.cc.

References cpu::arm, ARM_F_N, ARM_F_Z, cpu::cd, arm_cpu::flags, ic, and arm_cpu::r.

◆ Y() [13/37]

Y ( mlas  )

Definition at line 659 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, ic, and arm_cpu::r.

◆ Y() [14/37]

Y ( mull  )

Definition at line 690 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [15/37]

Y ( smulbb  )

Definition at line 705 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [16/37]

Y ( smultb  )

Definition at line 711 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [17/37]

Y ( smulbt  )

Definition at line 717 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [18/37]

Y ( smultt  )

Definition at line 723 of file cpu_arm_instr.cc.

References ic, and reg.

◆ Y() [19/37]

Y ( mov_reg_reg  )

Definition at line 736 of file cpu_arm_instr.cc.

References ic, cpu::pc, and reg.

◆ Y() [20/37]

Y ( mov_reg_pc  )

◆ Y() [21/37]

Y ( ret_trace  )

Definition at line 783 of file cpu_arm_instr.cc.

References cpu::arm, ARM_LR, cpu::cd, cpu::pc, and arm_cpu::r.

◆ Y() [22/37]

Y ( ret  )

◆ Y() [23/37]

Y ( msr_imm  )

Definition at line 829 of file cpu_arm_instr.cc.

References ic, instr, and reg.

◆ Y() [24/37]

Y ( msr  )

◆ Y() [25/37]

Y ( msr_imm_spsr  )

Definition at line 875 of file cpu_arm_instr.cc.

References ic, instr, and reg.

◆ Y() [26/37]

Y ( msr_spsr  )

Definition at line 881 of file cpu_arm_instr.cc.

References cpu::arm, cpu::cd, arm_cpu::cpsr, arm_cpu::flags, ic, and reg.

◆ Y() [27/37]

Y ( mrs  )

◆ Y() [28/37]

Y ( mrs_spsr  )

◆ Y() [29/37]

Y ( mcr_mrc  )

◆ Y() [30/37]

Y ( cdp  )

◆ Y() [31/37]

Y ( swi  )

Definition at line 980 of file cpu_arm_instr.cc.

References arm_exception(), ARM_EXCEPTION_PREF_ABT, ic, and cpu::pc.

◆ Y() [32/37]

Y ( bkpt  )

Definition at line 993 of file cpu_arm_instr.cc.

References arm_exception(), ARM_EXCEPTION_UND, ic, and cpu::pc.

◆ Y() [33/37]

Y ( und  )

◆ Y() [34/37]

Y ( swp  )

◆ Y() [35/37]

Y ( swpb  )

◆ Y() [36/37]

Y ( bdt_load  )

◆ Y() [37/37]

Y ( bdt_store  )

Variable Documentation

◆ arm_cond_instr_b_samepage

void(* arm_cond_instr_b_samepage[16])(struct cpu *, struct arm_instr_call *)
Initial value:
= {
arm_instr_b_samepage__eq, arm_instr_b_samepage__ne,
arm_instr_b_samepage__cs, arm_instr_b_samepage__cc,
arm_instr_b_samepage__mi, arm_instr_b_samepage__pl,
arm_instr_b_samepage__vs, arm_instr_b_samepage__vc,
arm_instr_b_samepage__hi, arm_instr_b_samepage__ls,
arm_instr_b_samepage__ge, arm_instr_b_samepage__lt,
arm_instr_b_samepage__gt, arm_instr_b_samepage__le,
arm_instr_b_samepage, arm_instr_nop }
void arm_instr_nop(struct cpu *, struct arm_instr_call *)

Definition at line 336 of file cpu_arm_instr.cc.

◆ arm_dpi_instr

void(* arm_dpi_instr[2 * 2 * 2 * 16 * 16])(struct cpu *, struct arm_instr_call *)

Definition at line 5075 of file tmp_arm_dpi.cc.

Referenced by Y().

◆ arm_dpi_instr_regshort

void(* arm_dpi_instr_regshort[2 * 16 * 16])(struct cpu *, struct arm_instr_call *)

Definition at line 7128 of file tmp_arm_dpi.cc.

Referenced by Y().

◆ arm_load_store_instr_3

void(* arm_load_store_instr_3[2048])(struct cpu *, struct arm_instr_call *)

Definition at line 5915 of file tmp_arm_loadstore.cc.

Referenced by X(), and Y().

◆ arm_load_store_instr_3_pc

void(* arm_load_store_instr_3_pc[2048])(struct cpu *, struct arm_instr_call *)

Definition at line 7968 of file tmp_arm_loadstore.cc.

Referenced by X(), and Y().

◆ arm_load_store_instr_pc

void(* arm_load_store_instr_pc[1024])(struct cpu *, struct arm_instr_call *)

Definition at line 2006 of file tmp_arm_loadstore.cc.

Referenced by Y().

◆ arm_r

uint32_t(* arm_r[8192])(struct cpu *, struct arm_instr_call *)

Definition at line 8204 of file tmp_arm_r.cc.

Referenced by X(), and Y().

◆ condition_ge

uint8_t condition_ge[16] = { 1,0,1,0, 1,0,1,0, 0,1,0,1, 0,1,0,1 }

Definition at line 129 of file cpu_arm_instr.cc.

Referenced by A__NAME__ge(), A__NAME__lt(), and arm_cpu_interpret_thumb_SLOW().

◆ condition_gt

uint8_t condition_gt[16] = { 1,0,1,0, 0,0,0,0, 0,1,0,1, 0,0,0,0 }

Definition at line 130 of file cpu_arm_instr.cc.

Referenced by A__NAME__gt(), A__NAME__le(), and arm_cpu_interpret_thumb_SLOW().

◆ condition_hi

uint8_t condition_hi[16] = { 0,0,1,1, 0,0,0,0, 0,0,1,1, 0,0,0,0 }

Definition at line 128 of file cpu_arm_instr.cc.

Referenced by A__NAME__hi(), A__NAME__ls(), and arm_cpu_interpret_thumb_SLOW().

◆ multi_opcode_f

void(** multi_opcode_f[256])(struct cpu *, struct arm_instr_call *)

Definition at line 9510 of file tmp_arm_multi.cc.

Referenced by Y().


Generated on Fri Dec 7 2018 19:52:23 for GXemul by doxygen 1.8.13