void ARMv7Thread::init_regs() { memset(GPR, 0, sizeof(GPR)); APSR.APSR = 0; IPSR.IPSR = 0; ISET = PC & 1 ? Thumb : ARM; // select instruction set PC = PC & ~1; // and fix PC ITSTATE.IT = 0; SP = stack_addr + stack_size; TLS = armv7_get_tls(m_id); debug = DF_DISASM | DF_PRINT; }
void ARMv7Thread::InitRegs() { memset(context.GPR, 0, sizeof(context.GPR)); context.APSR.APSR = 0; context.IPSR.IPSR = 0; context.ISET = PC & 1 ? Thumb : ARM; // select instruction set context.thread.SetPc(PC & ~1); // and fix PC context.ITSTATE.IT = 0; context.SP = m_stack_addr + m_stack_size; context.TLS = armv7_get_tls(GetId()); context.debug |= DF_DISASM | DF_PRINT; }