/* Miscellaneous i80960-dependent routines.
Most are called from macros defined in "tm-i960.h". */
-#include <stdio.h>
-#include <signal.h>
#include "defs.h"
-#include "param.h"
+#include <signal.h>
#include "symtab.h"
#include "value.h"
#include "frame.h"
-#include "signame.h"
#include "ieee-float.h"
/* Structure of i960 extended floating point format. */
cache_fsr = (struct frame_saved_regs *)
obstack_alloc (&frame_cache_obstack,
sizeof (struct frame_saved_regs));
- bzero (cache_fsr, sizeof (struct frame_saved_regs));
+ memset (cache_fsr, '\0', sizeof (struct frame_saved_regs));
fi->fsr = cache_fsr;
/* Find the start and end of the function prologue. If the PC
ap = 0;
else
ap = read_register (G14_REGNUM);
+ if (ap == 0)
+ ap = fi->frame;
}
fi->arg_pointer = ap; /* Cache it for next time */
return ap;
leafproc_return (ip)
CORE_ADDR ip; /* ip from currently executing function */
{
- int i;
- register struct misc_function *mf;
+ register struct minimal_symbol *msymbol;
char *p;
int dst;
unsigned int insn1, insn2;
CORE_ADDR return_addr;
- char *index ();
- if ((i = find_pc_misc_function (ip)) >= 0)
+ if ((msymbol = lookup_minimal_symbol_by_pc (ip)) != NULL)
{
- mf = &misc_function_vector[i];
- if ((p = index (mf->name, '.')) && !strcmp (p, ".lf"))
+ if ((p = strchr(SYMBOL_NAME (msymbol), '.')) && STREQ (p, ".lf"))
{
- if (next_insn (mf->address, &insn1, &insn2)
+ if (next_insn (SYMBOL_VALUE_ADDRESS (msymbol), &insn1, &insn2)
&& (insn1 & 0xff87ffff) == 0x5c80161e /* mov g14, gx */
&& (dst = REG_SRCDST (insn1)) <= G0_REGNUM + 7)
{
the return address from g14; otherwise, read it
from the register into which g14 was moved. */
- return_addr = read_register ((ip == mf->address)
+ return_addr =
+ read_register ((ip == SYMBOL_VALUE_ADDRESS (msymbol))
? G14_REGNUM : dst);
/* We know we are in a leaf procedure, but we don't know
if (!next_insn (return_addr, &insn1, &insn2)
|| (insn1 & 0xff000000) != 0xa000000 /* ret */
- || find_pc_misc_function (return_addr) != i)
+ || lookup_minimal_symbol_by_pc (return_addr) != msymbol)
return (return_addr);
}
}
if (siggnal < NSIG) {
printf ("\nProgram received signal %d, %s\n",
- siggnal,
- sys_siglist[siggnal]);
+ siggnal, safe_strsignal (siggnal));
} else {
/* The various target_wait()s bias the 80960 "signal number"
by adding NSIG to it, so it won't get confused with any