33 struct value *function,
35 int nargs,
struct value **args, CORE_ADDR sp,
37 CORE_ADDR struct_addr)
45 gdb_byte tmp_buffer[50];
49 struct value *arg = 0;
91 for (argno = 0, argbytes = 0; argno < nargs && ii < 8; ++ii)
112 gdb_assert (len <= 8);
124 while (argbytes < len)
127 memset (word, 0, reg_size);
129 ((
char *) arg->
contents ().data ()) + argbytes,
130 (len - argbytes) > reg_size
131 ? reg_size : len - argbytes);
133 ++ii, argbytes += reg_size;
136 goto ran_out_of_registers_for_arguments;
146 memset (word, 0, reg_size);
147 memcpy (word, arg->
contents ().data (), len);
153ran_out_of_registers_for_arguments:
166 sp = align_down (sp, 16);
171 if ((argno < nargs) || argbytes)
177 space += align_up (len - argbytes, 4);
183 for (; jj < nargs; ++jj)
185 struct value *val = args[jj];
187 space += align_up (val->
type ()->
length (), 4);
191 space = align_up (space, 16);
209 arg->
contents ().data () + argbytes,
212 ii += align_up (len - argbytes, 4) / 4;
216 for (; argno < nargs; ++argno)
226 if (
type->
code () == TYPE_CODE_FLT && f_argno < 13)
229 gdb_assert (len <= 8);
237 ii += align_up (len, 4) / 4;
266 gdb_byte *readbuf,
const gdb_byte *writebuf)
278 if (valtype->
code () == TYPE_CODE_ARRAY && valtype->
is_vector ()
279 && valtype->
length () == 16)
294 if (valtype->
code () == TYPE_CODE_STRUCT
295 || valtype->
code () == TYPE_CODE_UNION
296 || valtype->
code () == TYPE_CODE_ARRAY)
303 if (valtype->
code () == TYPE_CODE_FLT
304 && (valtype->
length () == 4 || valtype->
length () == 8))
357 if (valtype->
length () == 8)
359 gdb_assert (valtype->
code () != TYPE_CODE_FLT);
368 memcpy (readbuf, regval, 8);
387 if (bfd_get_flavour (abfd) != bfd_target_xcoff_flavour)
415 bfd_target_xcoff_flavour,
enum register_status cooked_read(int regnum, gdb_byte *buf)
void cooked_write(int regnum, const gdb_byte *buf)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
static void store_unsigned_integer(gdb_byte *addr, int len, enum bfd_endian byte_order, ULONGEST val)
@ RETURN_VALUE_REGISTER_CONVENTION
@ RETURN_VALUE_STRUCT_CONVENTION
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
void set_gdbarch_return_value(struct gdbarch *gdbarch, gdbarch_return_value_ftype *return_value)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
void set_gdbarch_long_double_bit(struct gdbarch *gdbarch, int long_double_bit)
void set_gdbarch_push_dummy_call(struct gdbarch *gdbarch, gdbarch_push_dummy_call_ftype *push_dummy_call)
function_call_return_method
struct type * check_typedef(struct type *type)
void gdbarch_register_osabi(enum bfd_architecture arch, unsigned long machine, enum gdb_osabi osabi, void(*init_osabi)(struct gdbarch_info, struct gdbarch *))
void gdbarch_register_osabi_sniffer(enum bfd_architecture arch, enum bfd_flavour flavour, enum gdb_osabi(*sniffer_fn)(bfd *))
#define PPC_MAX_REGISTER_SIZE
int ppc_floating_point_unit_p(struct gdbarch *gdbarch)
void regcache_raw_write_signed(struct regcache *regcache, int regnum, LONGEST val)
int register_size(struct gdbarch *gdbarch, int regnum)
enum register_status regcache_cooked_read_unsigned(struct regcache *regcache, int regnum, ULONGEST *val)
void regcache_raw_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
void regcache_cooked_write_unsigned(struct regcache *regcache, int regnum, ULONGEST val)
struct type * register_type(struct gdbarch *gdbarch, int regnum)
static void rs6000_lynx178_init_osabi(struct gdbarch_info info, struct gdbarch *gdbarch)
static enum return_value_convention rs6000_lynx178_return_value(struct gdbarch *gdbarch, struct value *function, struct type *valtype, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf)
static enum gdb_osabi rs6000_lynx178_osabi_sniffer(bfd *abfd)
void _initialize_rs6000_lynx178_tdep()
static CORE_ADDR rs6000_lynx178_push_dummy_call(struct gdbarch *gdbarch, struct value *function, struct regcache *regcache, CORE_ADDR bp_addr, int nargs, struct value **args, CORE_ADDR sp, function_call_return_method return_method, CORE_ADDR struct_addr)
gdb::array_view< const gdb_byte > contents()
struct type * type() const
void target_float_convert(const gdb_byte *from, const struct type *from_type, gdb_byte *to, const struct type *to_type)
void target_store_registers(struct regcache *regcache, int regno)
LONGEST unpack_long(struct type *type, const gdb_byte *valaddr)
int xcoff_get_n_import_files(bfd *abfd)