77 pc = ((uint32_t *) ra) - 3;
85 if ((mcode >> 16) == 0x3c19) {
91 offset = (int32_t) (mcode << 16);
97 assert((mcode >> 16) != 0x6739);
99 offset += (int16_t) (mcode & 0x0000ffff);
106 offset = (int16_t) (mcode & 0x0000ffff);
110 #if SIZEOF_VOID_P == 8
111 if ((mcode >> 16) == 0xdf3e) {
113 if ((mcode >> 16) == 0x8f3e) {
122 pa = ((uint8_t *) mptr) + offset;
127 #if SIZEOF_VOID_P == 8
128 assert((mcode >> 16) == 0xdfde);
130 assert((mcode >> 16) == 0x8fde);
135 pa = ((uint8_t *) pv) + offset;
155 uint32_t mcode = *((uint32_t*) xpc);
161 if (mcode == 0xec000000) {
207 #if defined(ENABLE_REPLACEMENT)
208 void md_patch_replacement_point(
u1 *pc,
u1 *savedmcode,
bool revert)
217 *(
u8*)(pc) = *(
u8*)(savedmcode);
221 *(
u8*)(savedmcode) = *(
u8*)(pc);
228 *(
u8*)(pc) = mcode.both;
#define M_ITYPE_GET_IMM(x)
intptr_t value
Value (numeric or address) passed with the trap.
Contains information about a decoded trap instruction.
int type
Specific trap type (see md-trap.h).
void * md_jit_method_patch_address(void *pv, void *ra, void *mptr)
#define M_ITYPE_GET_RT(x)
bool md_trap_decode(trapinfo_t *trp, int sig, void *xpc, executionstate_t *es)
Decode the trap instruction at the given PC.
uintptr_t intregs[INT_REG_CNT]
static void md_icacheflush(void *addr, int nbytes)
#define M_ITYPE_GET_RS(x)