summaryrefslogtreecommitdiff
path: root/gdb/config/i386/tm-i386.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/config/i386/tm-i386.h')
-rw-r--r--gdb/config/i386/tm-i386.h28
1 files changed, 12 insertions, 16 deletions
diff --git a/gdb/config/i386/tm-i386.h b/gdb/config/i386/tm-i386.h
index 918d62afeb1..2f180864181 100644
--- a/gdb/config/i386/tm-i386.h
+++ b/gdb/config/i386/tm-i386.h
@@ -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
@@ -68,7 +69,8 @@ extern int i386_skip_prologue (int);
through the frames for this because on some machines the new frame is not
set up until the new function executes some instructions. */
-#define SAVED_PC_AFTER_CALL(frame) (read_memory_integer (read_register (SP_REGNUM), 4))
+#define SAVED_PC_AFTER_CALL(frame) \
+ (read_memory_unsigned_integer (read_register (SP_REGNUM), 4))
/* Stack grows downward. */
@@ -326,7 +328,7 @@ extern void i386_extract_return_value (struct type *type, char *regbuf,
((thisframe)->signal_handler_caller \
? (thisframe)->frame \
: (!inside_entry_file ((thisframe)->pc) \
- ? read_memory_integer ((thisframe)->frame, 4) \
+ ? read_memory_unsigned_integer ((thisframe)->frame, 4) \
: 0))
/* A macro that tells us whether the function invocation represented
@@ -341,7 +343,7 @@ extern void i386_extract_return_value (struct type *type, char *regbuf,
#define FRAME_SAVED_PC(FRAME) \
(((FRAME)->signal_handler_caller \
? sigtramp_saved_pc (FRAME) \
- : read_memory_integer ((FRAME)->frame + 4, 4)) \
+ : read_memory_unsigned_integer ((FRAME)->frame + 4, 4)) \
)
extern CORE_ADDR sigtramp_saved_pc (struct frame_info *);
@@ -408,19 +410,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);