26 #ifndef VM_JIT_MIPS_MD_HPP_
27 #define VM_JIT_MIPS_MD_HPP_ 1
33 #include <sys/cachectl.h>
71 ra = *((
void **) (((uintptr_t) sp) + stackframesize - 8));
91 uint32_t*
pc = (uint32_t*) ra;
97 uint32_t mcode = pc[0];
101 if ((mcode >> 16) == 0x3c19) {
104 offset = (int32_t) (mcode << 16);
110 #if SIZEOF_VOID_P == 8
111 assert((mcode >> 16) == 0x6739);
113 assert((mcode >> 16) == 0x2739);
116 offset += (int16_t) (mcode & 0x0000ffff);
121 #if SIZEOF_VOID_P == 8
122 assert((mcode >> 16) == 0x67fe);
124 assert((mcode >> 16) == 0x27fe);
127 offset = (int16_t) (mcode & 0x0000ffff);
132 void*
pv = (
void*) (((uintptr_t)
ra) + offset);
147 cacheflush(addr, nbytes, BCACHE);
159 cacheflush(addr, nbytes, ICACHE);
171 cacheflush(addr, nbytes, DCACHE);
174 #endif // VM_JIT_MIPS_MD_HPP_
static void md_dcacheflush(void *addr, int nbytes)
static int32_t md_stacktrace_get_framesize(codeinfo *code)
Returns the size (in bytes) of the current stackframe, specified by the passed codeinfo structure...
static void * md_codegen_get_pv_from_pc(void *ra)
static void * md_stacktrace_get_returnaddress(void *sp, int32_t stackframesize)
static void md_icacheflush(void *addr, int nbytes)
static void md_cacheflush(void *addr, int nbytes)