aboutsummaryrefslogtreecommitdiff
path: root/gdb/config/vax
diff options
context:
space:
mode:
authorJason Thorpe <thorpej@netbsd.org>2002-04-22 20:59:28 +0000
committerJason Thorpe <thorpej@netbsd.org>2002-04-22 20:59:28 +0000
commitea74468cd028a4fc0a500ae8f7a13ba373b9af99 (patch)
treec71faf96f20285e58072285bdaa7fee8c66db2ac /gdb/config/vax
parent5516aa921e57f45c4d2bd559209c67f4b81d8368 (diff)
downloadgdb-ea74468cd028a4fc0a500ae8f7a13ba373b9af99.zip
gdb-ea74468cd028a4fc0a500ae8f7a13ba373b9af99.tar.gz
gdb-ea74468cd028a4fc0a500ae8f7a13ba373b9af99.tar.bz2
* vax-tdep.c (vax_store_struct_return): New function.
(vax_extract_return_value): Ditto. (vax_store_return_value): Ditto. (vax_extract_struct_value_address): Ditto. * config/vax/tm-vax.h (STORE_STRUCT_RETURN): Use vax_store_struct_return. (EXTRACT_RETURN_VALUE): Use vax_extract_return_value. (STORE_RETURN_VALUE): Use vax_store_return_value. (EXTRACT_STRUCT_VALUE_ADDRESS): Use vax_extract_struct_value_address.
Diffstat (limited to 'gdb/config/vax')
-rw-r--r--gdb/config/vax/tm-vax.h28
1 files changed, 9 insertions, 19 deletions
diff --git a/gdb/config/vax/tm-vax.h b/gdb/config/vax/tm-vax.h
index e8bab7e..015665c 100644
--- a/gdb/config/vax/tm-vax.h
+++ b/gdb/config/vax/tm-vax.h
@@ -122,30 +122,20 @@ extern int vax_register_virtual_size (int);
#define REGISTER_VIRTUAL_TYPE(N) vax_register_virtual_type ((N))
extern struct type *vax_register_virtual_type (int);
-/* Store the address of the place in which to copy the structure the
- subroutine will return. This is called from call_function. */
-
-#define STORE_STRUCT_RETURN(ADDR, SP) \
- { write_register (1, (ADDR)); }
-
-/* Extract from an array REGBUF containing the (raw) register state
- a function return value of type TYPE, and copy that, in virtual format,
- into VALBUF. */
+#define STORE_STRUCT_RETURN(ADDR, SP) vax_store_struct_return ((ADDR), (SP))
+extern void vax_store_struct_return (CORE_ADDR, CORE_ADDR);
#define EXTRACT_RETURN_VALUE(TYPE,REGBUF,VALBUF) \
- memcpy (VALBUF, REGBUF, TYPE_LENGTH (TYPE))
-
-/* Write into appropriate registers a function return value
- of type TYPE, given in virtual format. */
+ vax_extract_return_value ((TYPE), (REGBUF), (VALBUF))
+extern void vax_extract_return_value (struct type *, char *, char *);
#define STORE_RETURN_VALUE(TYPE,VALBUF) \
- write_register_bytes (0, VALBUF, TYPE_LENGTH (TYPE))
-
-/* Extract from an array REGBUF containing the (raw) register state
- the address in which a function should return its structure value,
- as a CORE_ADDR (or an expression that can be used as one). */
+ vax_store_return_value ((TYPE), (VALBUF))
+extern void vax_store_return_value (struct type *, char *);
-#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) (*(int *)(REGBUF))
+#define EXTRACT_STRUCT_VALUE_ADDRESS(REGBUF) \
+ vax_extract_struct_value_address ((REGBUF))
+extern CORE_ADDR vax_extract_struct_value_address (char *);
/* Describe the pointer in each stack frame to the previous stack frame