|
@@ -56,7 +56,7 @@ enum mem_op {
|
|
|
MEMOP_STORE_POSTINCR
|
|
|
};
|
|
|
|
|
|
-static inline tile_bundle_bits set_BrOff_X1(tile_bundle_bits n, int32_t offset)
|
|
|
+static inline tile_bundle_bits set_BrOff_X1(tile_bundle_bits n, s32 offset)
|
|
|
{
|
|
|
tile_bundle_bits result;
|
|
|
|
|
@@ -254,6 +254,18 @@ P("\n");
|
|
|
return bundle;
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Called after execve() has started the new image. This allows us
|
|
|
+ * to reset the info state. Note that the the mmap'ed memory, if there
|
|
|
+ * was any, has already been unmapped by the exec.
|
|
|
+ */
|
|
|
+void single_step_execve(void)
|
|
|
+{
|
|
|
+ struct thread_info *ti = current_thread_info();
|
|
|
+ kfree(ti->step_state);
|
|
|
+ ti->step_state = NULL;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* single_step_once() - entry point when single stepping has been triggered.
|
|
|
* @regs: The machine register state
|
|
@@ -373,7 +385,7 @@ void single_step_once(struct pt_regs *regs)
|
|
|
/* branches */
|
|
|
case BRANCH_OPCODE_X1:
|
|
|
{
|
|
|
- int32_t offset = signExtend17(get_BrOff_X1(bundle));
|
|
|
+ s32 offset = signExtend17(get_BrOff_X1(bundle));
|
|
|
|
|
|
/*
|
|
|
* For branches, we use a rewriting trick to let the
|
|
@@ -731,4 +743,9 @@ void single_step_once(struct pt_regs *regs)
|
|
|
__insn_mtspr(SPR_SINGLE_STEP_EN_K_K, 1 << USER_PL);
|
|
|
}
|
|
|
|
|
|
+void single_step_execve(void)
|
|
|
+{
|
|
|
+ /* Nothing */
|
|
|
+}
|
|
|
+
|
|
|
#endif /* !__tilegx__ */
|