* a29k-tdep.c (get_longjmp_target): add this function, from WRS.

* remote-vx.c: move read_register and write_register out to
        target specific files.
        * remote-vx29k.c (get_fp_contnets): add this function, from WRS.
This commit is contained in:
Kung Hsu
1995-03-01 00:01:49 +00:00
parent 33d8f4697c
commit 161520dc02
4 changed files with 241 additions and 130 deletions

View File

@@ -97,7 +97,7 @@ vx_read_register (regno)
/* PAD For now, don't care about exop register */
bzero (&registers[REGISTER_BYTE (EXO_REGNUM)], 1 * AM29K_GREG_SIZE);
memset (&registers[REGISTER_BYTE (EXO_REGNUM)], '\0', AM29K_GREG_SIZE);
/* If the target has floating point registers, fetch them.
Otherwise, zero the floating point register values in
@@ -113,16 +113,16 @@ vx_read_register (regno)
/* PAD For now, don't care about registers (?) AI0 to q */
bzero (&registers[REGISTER_BYTE (161)], 21 * AM29K_FPREG_SIZE);
memset (&registers[REGISTER_BYTE (161)], '\0', 21 * AM29K_FPREG_SIZE);
}
else
{
bzero (&registers[REGISTER_BYTE (FPE_REGNUM)], 1 * AM29K_FPREG_SIZE);
bzero (&registers[REGISTER_BYTE (FPS_REGNUM)], 1 * AM29K_FPREG_SIZE);
memset (&registers[REGISTER_BYTE (FPE_REGNUM)], '\0', AM29K_FPREG_SIZE);
memset (&registers[REGISTER_BYTE (FPS_REGNUM)], '\0', AM29K_FPREG_SIZE);
/* PAD For now, don't care about registers (?) AI0 to q */
bzero (&registers[REGISTER_BYTE (161)], 21 * AM29K_FPREG_SIZE);
memset (&registers[REGISTER_BYTE (161)], '\0', 21 * AM29K_FPREG_SIZE);
}
/* Mark the register cache valid. */
@@ -167,3 +167,22 @@ vx_write_register (regno)
}
}
/* VxWorks zeroes fp when the task is initialized; we use this
to terminate the frame chain. Chain means here the nominal address of
a frame, that is, the return address (lr0) address in the stack. To
obtain the frame pointer (lr1) contents, we must add 4 bytes.
Note : may be we should modify init_frame_info() to get the frame pointer
and store it into the frame_info struct rather than reading its
contents when FRAME_CHAIN_VALID is invoked. */
int
get_fp_contents (chain, thisframe)
CORE_ADDR chain;
struct frame_info *thisframe; /* not used here */
{
int fp_contents;
read_memory ((CORE_ADDR)(chain + 4), (char *) &fp_contents, 4);
return (fp_contents != 0);
}