OLD | NEW |
1 /* Target-dependent code for the Xtensa port of GDB, the GNU debugger. | 1 /* Target-dependent code for the Xtensa port of GDB, the GNU debugger. |
2 | 2 |
3 Copyright (C) 2003, 2005-2012 Free Software Foundation, Inc. | 3 Copyright (C) 2003, 2005-2012 Free Software Foundation, Inc. |
4 | 4 |
5 This file is part of GDB. | 5 This file is part of GDB. |
6 | 6 |
7 This program is free software; you can redistribute it and/or modify | 7 This program is free software; you can redistribute it and/or modify |
8 it under the terms of the GNU General Public License as published by | 8 it under the terms of the GNU General Public License as published by |
9 the Free Software Foundation; either version 3 of the License, or | 9 the Free Software Foundation; either version 3 of the License, or |
10 (at your option) any later version. | 10 (at your option) any later version. |
(...skipping 647 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 if (regnum == gdbarch_num_regs (gdbarch) | 658 if (regnum == gdbarch_num_regs (gdbarch) |
659 + gdbarch_num_pseudo_regs (gdbarch) -1) | 659 + gdbarch_num_pseudo_regs (gdbarch) -1) |
660 regnum = gdbarch_tdep (gdbarch)->a0_base + 1; | 660 regnum = gdbarch_tdep (gdbarch)->a0_base + 1; |
661 | 661 |
662 /* Renumber register, if aliase a0..a15 on Windowed ABI. */ | 662 /* Renumber register, if aliase a0..a15 on Windowed ABI. */ |
663 if (gdbarch_tdep (gdbarch)->isa_use_windowed_registers | 663 if (gdbarch_tdep (gdbarch)->isa_use_windowed_registers |
664 && (regnum >= gdbarch_tdep (gdbarch)->a0_base) | 664 && (regnum >= gdbarch_tdep (gdbarch)->a0_base) |
665 && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) | 665 && (regnum <= gdbarch_tdep (gdbarch)->a0_base + 15)) |
666 { | 666 { |
667 gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); | 667 gdb_byte *buf = (gdb_byte *) alloca (MAX_REGISTER_SIZE); |
668 unsigned int wb; | |
669 | 668 |
670 regcache_raw_read (regcache, | 669 regcache_raw_read (regcache, |
671 gdbarch_tdep (gdbarch)->wb_regnum, buf); | 670 gdbarch_tdep (gdbarch)->wb_regnum, buf); |
672 regnum = arreg_number (gdbarch, regnum, | 671 regnum = arreg_number (gdbarch, regnum, |
673 extract_unsigned_integer (buf, 4, byte_order)); | 672 extract_unsigned_integer (buf, 4, byte_order)); |
674 } | 673 } |
675 | 674 |
676 /* We can always write 'core' registers. | 675 /* We can always write 'core' registers. |
677 Note: We might have converted Ax->ARy. */ | 676 Note: We might have converted Ax->ARy. */ |
678 if (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch)) | 677 if (regnum >= 0 && regnum < gdbarch_num_regs (gdbarch)) |
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1675 if (len < 4) | 1674 if (len < 4) |
1676 regcache_raw_write_part (regcache, areg, offset, len, valbuf); | 1675 regcache_raw_write_part (regcache, areg, offset, len, valbuf); |
1677 else | 1676 else |
1678 regcache_raw_write (regcache, areg, valbuf); | 1677 regcache_raw_write (regcache, areg, valbuf); |
1679 } | 1678 } |
1680 } | 1679 } |
1681 | 1680 |
1682 | 1681 |
1683 static enum return_value_convention | 1682 static enum return_value_convention |
1684 xtensa_return_value (struct gdbarch *gdbarch, | 1683 xtensa_return_value (struct gdbarch *gdbarch, |
1685 » » struct type *func_type, | 1684 » » struct value *function, |
1686 struct type *valtype, | 1685 struct type *valtype, |
1687 struct regcache *regcache, | 1686 struct regcache *regcache, |
1688 gdb_byte *readbuf, | 1687 gdb_byte *readbuf, |
1689 const gdb_byte *writebuf) | 1688 const gdb_byte *writebuf) |
1690 { | 1689 { |
1691 /* Structures up to 16 bytes are returned in registers. */ | 1690 /* Structures up to 16 bytes are returned in registers. */ |
1692 | 1691 |
1693 int struct_return = ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT | 1692 int struct_return = ((TYPE_CODE (valtype) == TYPE_CODE_STRUCT |
1694 || TYPE_CODE (valtype) == TYPE_CODE_UNION | 1693 || TYPE_CODE (valtype) == TYPE_CODE_UNION |
1695 || TYPE_CODE (valtype) == TYPE_CODE_ARRAY) | 1694 || TYPE_CODE (valtype) == TYPE_CODE_ARRAY) |
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2809 char ibuf[XTENSA_ISA_BSZ]; | 2808 char ibuf[XTENSA_ISA_BSZ]; |
2810 CORE_ADDR ia, bt, ba; | 2809 CORE_ADDR ia, bt, ba; |
2811 xtensa_format ifmt; | 2810 xtensa_format ifmt; |
2812 int ilen, islots, is; | 2811 int ilen, islots, is; |
2813 xtensa_opcode opc; | 2812 xtensa_opcode opc; |
2814 int insn_num = 0; | 2813 int insn_num = 0; |
2815 int fail = 0; | 2814 int fail = 0; |
2816 void (*func) (struct gdbarch *, int, int, int, CORE_ADDR); | 2815 void (*func) (struct gdbarch *, int, int, int, CORE_ADDR); |
2817 | 2816 |
2818 int at, as, offset; | 2817 int at, as, offset; |
2819 int num_operands; | |
2820 | 2818 |
2821 /* WindowUnderflow12 = true, when inside _WindowUnderflow12. */ | 2819 /* WindowUnderflow12 = true, when inside _WindowUnderflow12. */ |
2822 int WindowUnderflow12 = (current_pc & 0x1ff) >= 0x140; | 2820 int WindowUnderflow12 = (current_pc & 0x1ff) >= 0x140; |
2823 | 2821 |
2824 isa = xtensa_default_isa; | 2822 isa = xtensa_default_isa; |
2825 gdb_assert (XTENSA_ISA_BSZ >= xtensa_isa_maxlength (isa)); | 2823 gdb_assert (XTENSA_ISA_BSZ >= xtensa_isa_maxlength (isa)); |
2826 ins = xtensa_insnbuf_alloc (isa); | 2824 ins = xtensa_insnbuf_alloc (isa); |
2827 slot = xtensa_insnbuf_alloc (isa); | 2825 slot = xtensa_insnbuf_alloc (isa); |
2828 ba = 0; | 2826 ba = 0; |
2829 ia = current_pc; | 2827 ia = current_pc; |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3314 class_maintenance, | 3312 class_maintenance, |
3315 &xtensa_debug_level, | 3313 &xtensa_debug_level, |
3316 _("Set Xtensa debugging."), | 3314 _("Set Xtensa debugging."), |
3317 _("Show Xtensa debugging."), _("\ | 3315 _("Show Xtensa debugging."), _("\ |
3318 When non-zero, Xtensa-specific debugging is enabled. \ | 3316 When non-zero, Xtensa-specific debugging is enabled. \ |
3319 Can be 1, 2, 3, or 4 indicating the level of debugging."), | 3317 Can be 1, 2, 3, or 4 indicating the level of debugging."), |
3320 NULL, | 3318 NULL, |
3321 NULL, | 3319 NULL, |
3322 &setdebuglist, &showdebuglist); | 3320 &setdebuglist, &showdebuglist); |
3323 } | 3321 } |
OLD | NEW |