* spu-tdep.c (spu_analyze_prologue): Track instruction to
store backchain as part of prologue.
This commit is contained in:
parent
7e9af34afe
commit
ce50d78b10
2 changed files with 16 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2010-03-02 Ulrich Weigand <uweigand@de.ibm.com>
|
||||||
|
|
||||||
|
* spu-tdep.c (spu_analyze_prologue): Track instruction to
|
||||||
|
store backchain as part of prologue.
|
||||||
|
|
||||||
2010-03-02 Daniel Jacobowitz <dan@codesourcery.com>
|
2010-03-02 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
* progspace.c (update_address_spaces): Update inferior address spaces
|
* progspace.c (update_address_spaces): Update inferior address spaces
|
||||||
|
|
|
@ -633,6 +633,7 @@ spu_analyze_prologue (struct gdbarch *gdbarch,
|
||||||
int found_sp = 0;
|
int found_sp = 0;
|
||||||
int found_fp = 0;
|
int found_fp = 0;
|
||||||
int found_lr = 0;
|
int found_lr = 0;
|
||||||
|
int found_bc = 0;
|
||||||
int reg_immed[SPU_NUM_GPRS];
|
int reg_immed[SPU_NUM_GPRS];
|
||||||
gdb_byte buf[16];
|
gdb_byte buf[16];
|
||||||
CORE_ADDR prolog_pc = start_pc;
|
CORE_ADDR prolog_pc = start_pc;
|
||||||
|
@ -661,8 +662,9 @@ spu_analyze_prologue (struct gdbarch *gdbarch,
|
||||||
- The first instruction to set up the stack pointer.
|
- The first instruction to set up the stack pointer.
|
||||||
- The first instruction to set up the frame pointer.
|
- The first instruction to set up the frame pointer.
|
||||||
- The first instruction to save the link register.
|
- The first instruction to save the link register.
|
||||||
|
- The first instruction to save the backchain.
|
||||||
|
|
||||||
We return the instruction after the latest of these three,
|
We return the instruction after the latest of these four,
|
||||||
or the incoming PC if none is found. The first instruction
|
or the incoming PC if none is found. The first instruction
|
||||||
to set up the stack pointer also defines the frame size.
|
to set up the stack pointer also defines the frame size.
|
||||||
|
|
||||||
|
@ -771,6 +773,14 @@ spu_analyze_prologue (struct gdbarch *gdbarch,
|
||||||
found_lr = 1;
|
found_lr = 1;
|
||||||
prolog_pc = pc + 4;
|
prolog_pc = pc + 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ra == SPU_RAW_SP_REGNUM
|
||||||
|
&& (found_sp? immed == 0 : rt == SPU_RAW_SP_REGNUM)
|
||||||
|
&& !found_bc)
|
||||||
|
{
|
||||||
|
found_bc = 1;
|
||||||
|
prolog_pc = pc + 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* _start uses SELB to set up the stack pointer. */
|
/* _start uses SELB to set up the stack pointer. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue