Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Side by Side Diff: gdb/mips-tdep.h

Issue 11969036: Merge GDB 7.5.1 (Closed) Base URL: http://git.chromium.org/native_client/nacl-gdb.git@master
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gdb/mips-linux-tdep.c ('k') | gdb/mips-tdep.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger. 1 /* Target-dependent header for the MIPS architecture, for GDB, the GNU Debugger.
2 2
3 Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc. 3 Copyright (C) 2002-2003, 2007-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 20 matching lines...) Expand all
31 MIPS_ABI_N64, 31 MIPS_ABI_N64,
32 MIPS_ABI_O64, 32 MIPS_ABI_O64,
33 MIPS_ABI_EABI32, 33 MIPS_ABI_EABI32,
34 MIPS_ABI_EABI64, 34 MIPS_ABI_EABI64,
35 MIPS_ABI_LAST 35 MIPS_ABI_LAST
36 }; 36 };
37 37
38 /* Return the MIPS ABI associated with GDBARCH. */ 38 /* Return the MIPS ABI associated with GDBARCH. */
39 enum mips_abi mips_abi (struct gdbarch *gdbarch); 39 enum mips_abi mips_abi (struct gdbarch *gdbarch);
40 40
41 /* Base and compressed MIPS ISA variations. */
42 enum mips_isa
43 {
44 ISA_MIPS = -1, /* mips_compression_string depends on it. */
45 ISA_MIPS16,
46 ISA_MICROMIPS
47 };
48
41 /* Return the MIPS ISA's register size. Just a short cut to the BFD 49 /* Return the MIPS ISA's register size. Just a short cut to the BFD
42 architecture's word size. */ 50 architecture's word size. */
43 extern int mips_isa_regsize (struct gdbarch *gdbarch); 51 extern int mips_isa_regsize (struct gdbarch *gdbarch);
44 52
45 /* Return the current index for various MIPS registers. */ 53 /* Return the current index for various MIPS registers. */
46 struct mips_regnum 54 struct mips_regnum
47 { 55 {
48 int pc; 56 int pc;
49 int fp0; 57 int fp0;
50 int fp_implementation_revision; 58 int fp_implementation_revision;
51 int fp_control_status; 59 int fp_control_status;
52 int badvaddr; /* Bad vaddr for addressing exception. */ 60 int badvaddr; /* Bad vaddr for addressing exception. */
53 int cause; /* Describes last exception. */ 61 int cause; /* Describes last exception. */
54 int hi; /* Multiply/divide temp. */ 62 int hi; /* Multiply/divide temp. */
55 int lo; /* ... */ 63 int lo; /* ... */
64 int dspacc; /* SmartMIPS/DSP accumulators. */
65 int dspctl; /* DSP control. */
56 }; 66 };
57 extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch); 67 extern const struct mips_regnum *mips_regnum (struct gdbarch *gdbarch);
58 68
59 /* Some MIPS boards don't support floating point while others only 69 /* Some MIPS boards don't support floating point while others only
60 support single-precision floating-point operations. */ 70 support single-precision floating-point operations. */
61 71
62 enum mips_fpu_type 72 enum mips_fpu_type
63 { 73 {
64 MIPS_FPU_DOUBLE, /* Full double precision floating point. */ 74 MIPS_FPU_DOUBLE, /* Full double precision floating point. */
65 MIPS_FPU_SINGLE, /* Single precision floating point (R4650). */ 75 MIPS_FPU_SINGLE, /* Single precision floating point (R4650). */
66 MIPS_FPU_NONE /* No floating point. */ 76 MIPS_FPU_NONE /* No floating point. */
67 }; 77 };
68 78
69 /* MIPS specific per-architecture information. */ 79 /* MIPS specific per-architecture information. */
70 struct gdbarch_tdep 80 struct gdbarch_tdep
71 { 81 {
72 /* from the elf header */ 82 /* from the elf header */
73 int elf_flags; 83 int elf_flags;
74 84
75 /* mips options */ 85 /* mips options */
76 enum mips_abi mips_abi; 86 enum mips_abi mips_abi;
77 enum mips_abi found_abi; 87 enum mips_abi found_abi;
88 enum mips_isa mips_isa;
78 enum mips_fpu_type mips_fpu_type; 89 enum mips_fpu_type mips_fpu_type;
79 int mips_last_arg_regnum; 90 int mips_last_arg_regnum;
80 int mips_last_fp_arg_regnum; 91 int mips_last_fp_arg_regnum;
81 int default_mask_address_p; 92 int default_mask_address_p;
82 /* Is the target using 64-bit raw integer registers but only 93 /* Is the target using 64-bit raw integer registers but only
83 storing a left-aligned 32-bit value in each? */ 94 storing a left-aligned 32-bit value in each? */
84 int mips64_transfers_32bit_regs_p; 95 int mips64_transfers_32bit_regs_p;
85 /* Indexes for various registers. IRIX and embedded have 96 /* Indexes for various registers. IRIX and embedded have
86 different values. This contains the "public" fields. Don't 97 different values. This contains the "public" fields. Don't
87 add any that do not need to be public. */ 98 add any that do not need to be public. */
(...skipping 22 matching lines...) Expand all
110 }; 121 };
111 122
112 /* Register numbers of various important registers. */ 123 /* Register numbers of various important registers. */
113 124
114 enum 125 enum
115 { 126 {
116 MIPS_ZERO_REGNUM = 0, /* Read-only register, always 0. */ 127 MIPS_ZERO_REGNUM = 0, /* Read-only register, always 0. */
117 MIPS_AT_REGNUM = 1, 128 MIPS_AT_REGNUM = 1,
118 MIPS_V0_REGNUM = 2, /* Function integer return value. */ 129 MIPS_V0_REGNUM = 2, /* Function integer return value. */
119 MIPS_A0_REGNUM = 4, /* Loc of first arg during a subr call. */ 130 MIPS_A0_REGNUM = 4, /* Loc of first arg during a subr call. */
131 MIPS_S2_REGNUM = 18, /* Contains return address in MIPS16 thunks. */
120 MIPS_T9_REGNUM = 25, /* Contains address of callee in PIC. */ 132 MIPS_T9_REGNUM = 25, /* Contains address of callee in PIC. */
133 MIPS_GP_REGNUM = 28,
121 MIPS_SP_REGNUM = 29, 134 MIPS_SP_REGNUM = 29,
122 MIPS_RA_REGNUM = 31, 135 MIPS_RA_REGNUM = 31,
123 MIPS_PS_REGNUM = 32, /* Contains processor status. */ 136 MIPS_PS_REGNUM = 32, /* Contains processor status. */
124 MIPS_EMBED_LO_REGNUM = 33, 137 MIPS_EMBED_LO_REGNUM = 33,
125 MIPS_EMBED_HI_REGNUM = 34, 138 MIPS_EMBED_HI_REGNUM = 34,
126 MIPS_EMBED_BADVADDR_REGNUM = 35, 139 MIPS_EMBED_BADVADDR_REGNUM = 35,
127 MIPS_EMBED_CAUSE_REGNUM = 36, 140 MIPS_EMBED_CAUSE_REGNUM = 36,
128 MIPS_EMBED_PC_REGNUM = 37, 141 MIPS_EMBED_PC_REGNUM = 37,
129 MIPS_EMBED_FP0_REGNUM = 38, 142 MIPS_EMBED_FP0_REGNUM = 38,
130 MIPS_UNUSED_REGNUM = 73, /* Never used, FIXME. */ 143 MIPS_UNUSED_REGNUM = 73, /* Never used, FIXME. */
(...skipping 10 matching lines...) Expand all
141 { 154 {
142 MIPS_INSN16_SIZE = 2, 155 MIPS_INSN16_SIZE = 2,
143 MIPS_INSN32_SIZE = 4, 156 MIPS_INSN32_SIZE = 4,
144 /* The number of floating-point or integer registers. */ 157 /* The number of floating-point or integer registers. */
145 MIPS_NUMREGS = 32 158 MIPS_NUMREGS = 32
146 }; 159 };
147 160
148 /* Single step based on where the current instruction will take us. */ 161 /* Single step based on where the current instruction will take us. */
149 extern int mips_software_single_step (struct frame_info *frame); 162 extern int mips_software_single_step (struct frame_info *frame);
150 163
164 /* Tell if the program counter value in MEMADDR is in a standard
165 MIPS function. */
166 extern int mips_pc_is_mips (bfd_vma memaddr);
167
151 /* Tell if the program counter value in MEMADDR is in a MIPS16 168 /* Tell if the program counter value in MEMADDR is in a MIPS16
152 function. */ 169 function. */
153 extern int mips_pc_is_mips16 (bfd_vma memaddr); 170 extern int mips_pc_is_mips16 (struct gdbarch *gdbarch, bfd_vma memaddr);
171
172 /* Tell if the program counter value in MEMADDR is in a microMIPS
173 function. */
174 extern int mips_pc_is_micromips (struct gdbarch *gdbarch, bfd_vma memaddr);
154 175
155 /* Return the currently configured (or set) saved register size. */ 176 /* Return the currently configured (or set) saved register size. */
156 extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch); 177 extern unsigned int mips_abi_regsize (struct gdbarch *gdbarch);
157 178
179 /* Make PC the address of the next instruction to execute. */
180 extern void mips_write_pc (struct regcache *regcache, CORE_ADDR pc);
181
158 /* Target descriptions which only indicate the size of general 182 /* Target descriptions which only indicate the size of general
159 registers. */ 183 registers. */
160 extern struct target_desc *mips_tdesc_gp32; 184 extern struct target_desc *mips_tdesc_gp32;
161 extern struct target_desc *mips_tdesc_gp64; 185 extern struct target_desc *mips_tdesc_gp64;
162 186
163 #endif /* MIPS_TDEP_H */ 187 #endif /* MIPS_TDEP_H */
OLDNEW
« no previous file with comments | « gdb/mips-linux-tdep.c ('k') | gdb/mips-tdep.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698