* config/i386/tm-i386.h: Add forward declaration of `struct value'.
(FIX_CALL_DUMMY): Redefined to call i386_fix_call_dummy. (i386_fix_call_dummy): Add prototype. * i386-tdep.c (i386_fix_call_dummy): New function based on the code from the old FIX_CALL_DUMMY macro.
This commit is contained in:
parent
8ab8638139
commit
a7769679c2
@ -1,3 +1,11 @@
|
||||
2000-06-12 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
* config/i386/tm-i386.h: Add forward declaration of `struct value'.
|
||||
(FIX_CALL_DUMMY): Redefined to call i386_fix_call_dummy.
|
||||
(i386_fix_call_dummy): Add prototype.
|
||||
* i386-tdep.c (i386_fix_call_dummy): New function based on the
|
||||
code from the old FIX_CALL_DUMMY macro.
|
||||
|
||||
2000-06-12 Kevin Buettner <kevinb@redhat.com>
|
||||
|
||||
* procfs.c, remote.c: Eliminate use of PARAMS from these files.
|
||||
|
@ -21,9 +21,10 @@
|
||||
#ifndef TM_I386_H
|
||||
#define TM_I386_H 1
|
||||
|
||||
/* Forward decl's for prototypes */
|
||||
/* Forward declarations for prototypes. */
|
||||
struct frame_info;
|
||||
struct frame_saved_regs;
|
||||
struct value;
|
||||
struct type;
|
||||
|
||||
#define TARGET_BYTE_ORDER LITTLE_ENDIAN
|
||||
@ -408,19 +409,13 @@ extern void i386_pop_frame (void);
|
||||
/* Insert the specified number of args and function address
|
||||
into a call sequence of the above form stored at DUMMYNAME. */
|
||||
|
||||
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
|
||||
{ \
|
||||
int from, to, delta, loc; \
|
||||
loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH); \
|
||||
from = loc + 5; \
|
||||
to = (int)(fun); \
|
||||
delta = to - from; \
|
||||
*((char *)(dummyname) + 1) = (delta & 0xff); \
|
||||
*((char *)(dummyname) + 2) = ((delta >> 8) & 0xff); \
|
||||
*((char *)(dummyname) + 3) = ((delta >> 16) & 0xff); \
|
||||
*((char *)(dummyname) + 4) = ((delta >> 24) & 0xff); \
|
||||
}
|
||||
#define FIX_CALL_DUMMY(dummyname, pc, fun, nargs, args, type, gcc_p) \
|
||||
i386_fix_call_dummy (dummyname, pc, fun, nargs, args, type, gcc_p)
|
||||
extern void i386_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun,
|
||||
int nargs, struct value **args,
|
||||
struct type *type, int gcc_p);
|
||||
|
||||
/* FIXME: kettenis/2000-06-12: These do not belong here. */
|
||||
extern void print_387_control_word (unsigned int);
|
||||
extern void print_387_status_word (unsigned int);
|
||||
|
||||
|
@ -638,6 +638,26 @@ i386_push_dummy_frame ()
|
||||
write_register (SP_REGNUM, sp);
|
||||
}
|
||||
|
||||
/* Insert the (relative) function address into the call sequence
|
||||
stored at DYMMY. */
|
||||
|
||||
void
|
||||
i386_fix_call_dummy (char *dummy, CORE_ADDR pc, CORE_ADDR fun, int nargs,
|
||||
value_ptr *args, struct type *type, int gcc_p)
|
||||
{
|
||||
int from, to, delta, loc;
|
||||
|
||||
loc = (int)(read_register (SP_REGNUM) - CALL_DUMMY_LENGTH);
|
||||
from = loc + 5;
|
||||
to = (int)(fun);
|
||||
delta = to - from;
|
||||
|
||||
*((char *)(dummy) + 1) = (delta & 0xff);
|
||||
*((char *)(dummy) + 2) = ((delta >> 8) & 0xff);
|
||||
*((char *)(dummy) + 3) = ((delta >> 16) & 0xff);
|
||||
*((char *)(dummy) + 4) = ((delta >> 24) & 0xff);
|
||||
}
|
||||
|
||||
void
|
||||
i386_pop_frame ()
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user