* rs6000-tdep.c: Fix byte-swapping sins.
This commit is contained in:
parent
b77a4fbe8f
commit
b112f2aee4
1 changed files with 9 additions and 4 deletions
|
@ -135,7 +135,7 @@ single_step (signal)
|
||||||
if (!one_stepped) {
|
if (!one_stepped) {
|
||||||
loc = read_pc ();
|
loc = read_pc ();
|
||||||
|
|
||||||
read_memory (loc, (char *) &insn, 4);
|
insn = read_memory_integer (loc, 4);
|
||||||
|
|
||||||
breaks[0] = loc + INSNLEN(insn);
|
breaks[0] = loc + INSNLEN(insn);
|
||||||
opcode = insn >> 26;
|
opcode = insn >> 26;
|
||||||
|
@ -326,6 +326,8 @@ push_dummy_frame ()
|
||||||
{
|
{
|
||||||
/* stack pointer. */
|
/* stack pointer. */
|
||||||
CORE_ADDR sp;
|
CORE_ADDR sp;
|
||||||
|
/* Same thing, target byte order. */
|
||||||
|
char sp_targ[4];
|
||||||
|
|
||||||
/* link register. */
|
/* link register. */
|
||||||
CORE_ADDR pc;
|
CORE_ADDR pc;
|
||||||
|
@ -348,7 +350,7 @@ push_dummy_frame ()
|
||||||
|
|
||||||
sp = read_register(SP_REGNUM);
|
sp = read_register(SP_REGNUM);
|
||||||
pc = read_register(PC_REGNUM);
|
pc = read_register(PC_REGNUM);
|
||||||
memcpy (pc_targ, (char *) &pc, 4);
|
store_address (pc, 4, pc_targ);
|
||||||
|
|
||||||
dummy_frame_addr [dummy_frame_count++] = sp;
|
dummy_frame_addr [dummy_frame_count++] = sp;
|
||||||
|
|
||||||
|
@ -387,7 +389,8 @@ push_dummy_frame ()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Save sp or so called back chain right here. */
|
/* Save sp or so called back chain right here. */
|
||||||
write_memory (sp-DUMMY_FRAME_SIZE, (char *)&sp, 4);
|
store_address (sp_targ, 4, sp);
|
||||||
|
write_memory (sp-DUMMY_FRAME_SIZE, sp_targ, 4);
|
||||||
sp -= DUMMY_FRAME_SIZE;
|
sp -= DUMMY_FRAME_SIZE;
|
||||||
|
|
||||||
/* And finally, this is the back chain. */
|
/* And finally, this is the back chain. */
|
||||||
|
@ -856,7 +859,9 @@ ran_out_of_registers_for_arguments:
|
||||||
read_memory (saved_sp, tmp_buffer, 24);
|
read_memory (saved_sp, tmp_buffer, 24);
|
||||||
write_memory (sp, tmp_buffer, 24);
|
write_memory (sp, tmp_buffer, 24);
|
||||||
|
|
||||||
write_memory (sp, (char *)&saved_sp, 4); /* set back chain properly */
|
/* set back chain properly */
|
||||||
|
store_address (tmp_buffer, 4, saved_sp);
|
||||||
|
write_memory (sp, tmp_buffer, 4);
|
||||||
|
|
||||||
target_store_registers (-1);
|
target_store_registers (-1);
|
||||||
return sp;
|
return sp;
|
||||||
|
|
Loading…
Add table
Reference in a new issue