diff options
Diffstat (limited to 'gdb/mt-tdep.c')
-rw-r--r-- | gdb/mt-tdep.c | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/gdb/mt-tdep.c b/gdb/mt-tdep.c index b0da869..58fc491 100644 --- a/gdb/mt-tdep.c +++ b/gdb/mt-tdep.c @@ -339,6 +339,8 @@ mt_return_value (struct gdbarch *gdbarch, struct type *func_type, struct type *type, struct regcache *regcache, gdb_byte *readbuf, const gdb_byte *writebuf) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + if (TYPE_LENGTH (type) > 4) { /* Return values > 4 bytes are returned in memory, @@ -369,7 +371,8 @@ mt_return_value (struct gdbarch *gdbarch, struct type *func_type, /* Return values of <= 4 bytes are returned in R11. */ regcache_cooked_read_unsigned (regcache, MT_R11_REGNUM, &temp); - store_unsigned_integer (readbuf, TYPE_LENGTH (type), temp); + store_unsigned_integer (readbuf, TYPE_LENGTH (type), + byte_order, temp); } if (writebuf) @@ -403,6 +406,7 @@ mt_return_value (struct gdbarch *gdbarch, struct type *func_type, static CORE_ADDR mt_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR func_addr = 0, func_end = 0; char *func_name; unsigned long instr; @@ -430,7 +434,7 @@ mt_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc) /* No function symbol, or no line symbol. Use prologue scanning method. */ for (;; pc += 4) { - instr = read_memory_unsigned_integer (pc, 4); + instr = read_memory_unsigned_integer (pc, 4, byte_order); if (instr == 0x12000000) /* nop */ continue; if (instr == 0x12ddc000) /* copy sp into fp */ @@ -474,13 +478,15 @@ static int mt_select_coprocessor (struct gdbarch *gdbarch, struct regcache *regcache, int regno) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); unsigned index, base; gdb_byte copro[4]; /* Get the copro pseudo regnum. */ regcache_raw_read (regcache, MT_COPRO_REGNUM, copro); - base = (extract_signed_integer (&copro[0], 2) * MT_COPRO_PSEUDOREG_DIM_2 - + extract_signed_integer (&copro[2], 2)); + base = ((extract_signed_integer (&copro[0], 2, byte_order) + * MT_COPRO_PSEUDOREG_DIM_2) + + extract_signed_integer (&copro[2], 2, byte_order)); regno -= MT_COPRO_PSEUDOREG_ARRAY; index = regno % MT_COPRO_PSEUDOREG_REGS; @@ -491,8 +497,10 @@ mt_select_coprocessor (struct gdbarch *gdbarch, coprocessor register cache. */ unsigned ix; - store_signed_integer (&copro[0], 2, regno / MT_COPRO_PSEUDOREG_DIM_2); - store_signed_integer (&copro[2], 2, regno % MT_COPRO_PSEUDOREG_DIM_2); + store_signed_integer (&copro[0], 2, byte_order, + regno / MT_COPRO_PSEUDOREG_DIM_2); + store_signed_integer (&copro[2], 2, byte_order, + regno % MT_COPRO_PSEUDOREG_DIM_2); regcache_raw_write (regcache, MT_COPRO_REGNUM, copro); /* We must flush the cache, as it is now invalid. */ @@ -519,6 +527,8 @@ static void mt_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache, int regno, gdb_byte *buf) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + switch (regno) { case MT_COPRO_REGNUM: @@ -537,7 +547,7 @@ mt_pseudo_register_read (struct gdbarch *gdbarch, regcache_cooked_read_unsigned (regcache, MT_EXMAC_REGNUM, &ext_mac); newmac = (oldmac & 0xffffffff) | ((long long) (ext_mac & 0xff) << 32); - store_signed_integer (buf, 8, newmac); + store_signed_integer (buf, 8, byte_order, newmac); } else regcache_raw_read (regcache, MT_MAC_REGNUM, buf); @@ -567,6 +577,7 @@ mt_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache, int regno, const gdb_byte *buf) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); int i; switch (regno) @@ -587,7 +598,7 @@ mt_pseudo_register_write (struct gdbarch *gdbarch, unsigned int oldmac, ext_mac; ULONGEST newmac; - newmac = extract_unsigned_integer (buf, 8); + newmac = extract_unsigned_integer (buf, 8, byte_order); oldmac = newmac & 0xffffffff; ext_mac = (newmac >> 32) & 0xff; regcache_cooked_write_unsigned (regcache, MT_MAC_REGNUM, oldmac); @@ -626,6 +637,8 @@ mt_registers_info (struct gdbarch *gdbarch, struct ui_file *file, struct frame_info *frame, int regnum, int all) { + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); + if (regnum == -1) { int lim; @@ -672,10 +685,10 @@ mt_registers_info (struct gdbarch *gdbarch, for (i = 0; i < regsize; i++) fprintf_filtered (file, "%02x", (unsigned int) - extract_unsigned_integer (buff + i, 1)); + extract_unsigned_integer (buff + i, 1, byte_order)); fputs_filtered ("\t", file); print_longest (file, 'd', 0, - extract_unsigned_integer (buff, regsize)); + extract_unsigned_integer (buff, regsize, byte_order)); fputs_filtered ("\n", file); } else if (regnum == MT_COPRO_REGNUM @@ -709,13 +722,13 @@ mt_registers_info (struct gdbarch *gdbarch, /* Get the two "real" mac registers. */ frame_register_read (frame, MT_MAC_REGNUM, buf); oldmac = extract_unsigned_integer - (buf, register_size (gdbarch, MT_MAC_REGNUM)); + (buf, register_size (gdbarch, MT_MAC_REGNUM), byte_order); if (gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_mrisc2 || gdbarch_bfd_arch_info (gdbarch)->mach == bfd_mach_ms2) { frame_register_read (frame, MT_EXMAC_REGNUM, buf); ext_mac = extract_unsigned_integer - (buf, register_size (gdbarch, MT_EXMAC_REGNUM)); + (buf, register_size (gdbarch, MT_EXMAC_REGNUM), byte_order); } else ext_mac = 0; @@ -755,6 +768,7 @@ mt_push_dummy_call (struct gdbarch *gdbarch, struct value *function, int struct_return, CORE_ADDR struct_addr) { #define wordsize 4 + enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); gdb_byte buf[MT_MAX_STRUCT_SIZE]; int argreg = MT_1ST_ARGREG; int split_param_len = 0; @@ -778,7 +792,7 @@ mt_push_dummy_call (struct gdbarch *gdbarch, struct value *function, regcache_cooked_write_unsigned (regcache, argreg++, extract_unsigned_integer (value_contents (args[i]), - wordsize)); + wordsize, byte_order)); break; case 8: case 12: @@ -791,7 +805,7 @@ mt_push_dummy_call (struct gdbarch *gdbarch, struct value *function, /* This word of the argument is passed in a register. */ regcache_cooked_write_unsigned (regcache, argreg++, extract_unsigned_integer - (val, wordsize)); + (val, wordsize, byte_order)); typelen -= wordsize; val += wordsize; } |