@@ -103,6 +103,7 @@ typedef struct {
typedef struct CPUArchState {
target_ulong gpr[TOTAL_PER_THREAD_REGS];
target_ulong pred[NUM_PREGS];
+ target_ulong cause_code;
/* For comparing with LLDB on target - see adjust_stack_ptrs function */
target_ulong last_pc_dumped;
@@ -116,11 +117,14 @@ typedef struct CPUArchState {
target_ulong *g_sreg;
target_ulong greg[NUM_GREGS];
+ target_ulong wait_next_pc;
/* This alias of CPUState.cpu_index is used by imported sources: */
target_ulong threadId;
hex_lock_state_t tlb_lock_state;
hex_lock_state_t k0_lock_state;
+ target_ulong tlb_lock_count;
+ target_ulong k0_lock_count;
target_ulong next_PC;
#endif
target_ulong new_value_usr;
@@ -312,7 +312,11 @@ static void hexagon_cpu_reset_hold(Object *obj, ResetType type)
env->threadId = cs->cpu_index;
env->tlb_lock_state = HEX_LOCK_UNLOCKED;
env->k0_lock_state = HEX_LOCK_UNLOCKED;
+ env->tlb_lock_count = 0;
+ env->k0_lock_count = 0;
env->next_PC = 0;
+ env->wait_next_pc = 0;
+ env->cause_code = -1;
#endif
}
@@ -22,7 +22,11 @@ const VMStateDescription vmstate_hexagon_cpu = {
VMSTATE_UINTTL(env.next_PC, HexagonCPU),
VMSTATE_UINTTL(env.tlb_lock_state, HexagonCPU),
VMSTATE_UINTTL(env.k0_lock_state, HexagonCPU),
+ VMSTATE_UINTTL(env.tlb_lock_count, HexagonCPU),
+ VMSTATE_UINTTL(env.k0_lock_count, HexagonCPU),
VMSTATE_UINTTL(env.threadId, HexagonCPU),
+ VMSTATE_UINTTL(env.cause_code, HexagonCPU),
+ VMSTATE_UINTTL(env.wait_next_pc, HexagonCPU),
VMSTATE_END_OF_LIST()
},
};