* mn10200-tdep.c (mn10200_analyze_prologue): Look for save of "a1"

in the prologue too.
This commit is contained in:
Jeff Law
1997-03-21 06:15:27 +00:00
parent aa7cec3fb8
commit fe380dcc43
2 changed files with 23 additions and 2 deletions

View File

@ -1,5 +1,8 @@
Thu Mar 20 20:52:04 1997 Jeffrey A Law (law@cygnus.com) Thu Mar 20 20:52:04 1997 Jeffrey A Law (law@cygnus.com)
* mn10200-tdep.c (mn10200_analyze_prologue): Look for save of "a1"
in the prologue too.
* remote-sim.c (gdb_os_vprintf_filtered): Fix to work with non-ANSI * remote-sim.c (gdb_os_vprintf_filtered): Fix to work with non-ANSI
compilers. compilers.
(gdb_os_evprintf_filtered): Similarly. (gdb_os_evprintf_filtered): Similarly.

View File

@ -37,7 +37,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
mov fp,a0 mov fp,a0
mov sp,fp mov sp,fp
add <size>,sp add <size>,sp
Register saves for d2, d3, a3 as needed. Saves start Register saves for d2, d3, a1, a2 as needed. Saves start
at fp - <size> and work towards higher addresses. Note at fp - <size> and work towards higher addresses. Note
that the saves are actually done off the stack pointer that the saves are actually done off the stack pointer
in the prologue! This makes for smaller code and easier in the prologue! This makes for smaller code and easier
@ -46,7 +46,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
Without frame pointer: Without frame pointer:
add <size>,sp add <size>,sp
Register saves for d2, d3, a3 as needed. Saves start Register saves for d2, d3, a1, a2 as needed. Saves start
at sp and work towards higher addresses. at sp and work towards higher addresses.
@ -325,6 +325,7 @@ mn10200_analyze_prologue (fi, pc)
Search for movx d2,(X,a3) (0xf55eXX) Search for movx d2,(X,a3) (0xf55eXX)
then movx d3,(X,a3) (0xf55fXX) then movx d3,(X,a3) (0xf55fXX)
then mov a1,(X,a3) (0x5dXX) No frame pointer case
then mov a2,(X,a3) (0x5eXX) No frame pointer case then mov a2,(X,a3) (0x5eXX) No frame pointer case
or mov a0,(X,a3) (0x5cXX) Frame pointer case. */ or mov a0,(X,a3) (0x5cXX) Frame pointer case. */
@ -365,6 +366,23 @@ mn10200_analyze_prologue (fi, pc)
if (status != 0) if (status != 0)
return addr; return addr;
} }
if (buf[0] == 0x5d)
{
if (fi)
{
status = target_read_memory (addr + 1, buf, 1);
if (status != 0)
return addr;
fi->fsr.regs[5] = (fi->frame + stack_size
+ extract_signed_integer (buf, 1));
}
addr += 2;
if (addr >= stop)
return addr;
status = target_read_memory (addr, buf, 2);
if (status != 0)
return addr;
}
if (buf[0] == 0x5e || buf[0] == 0x5c) if (buf[0] == 0x5e || buf[0] == 0x5c)
{ {
if (fi) if (fi)