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

Side by Side Diff: gdb/mips-linux-nat.c

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/minsyms.c ('k') | gdb/mips-linux-tdep.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Native-dependent code for GNU/Linux on MIPS processors. 1 /* Native-dependent code for GNU/Linux on MIPS processors.
2 2
3 Copyright (C) 2001-2012 Free Software Foundation, Inc. 3 Copyright (C) 2001-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 18 matching lines...) Expand all
29 #include "mips-linux-tdep.h" 29 #include "mips-linux-tdep.h"
30 #include "target-descriptions.h" 30 #include "target-descriptions.h"
31 31
32 #include "gdb_proc_service.h" 32 #include "gdb_proc_service.h"
33 #include "gregset.h" 33 #include "gregset.h"
34 34
35 #include <sgidefs.h> 35 #include <sgidefs.h>
36 #include <sys/ptrace.h> 36 #include <sys/ptrace.h>
37 37
38 #include "features/mips-linux.c" 38 #include "features/mips-linux.c"
39 #include "features/mips-dsp-linux.c"
39 #include "features/mips64-linux.c" 40 #include "features/mips64-linux.c"
41 #include "features/mips64-dsp-linux.c"
40 42
41 #ifndef PTRACE_GET_THREAD_AREA 43 #ifndef PTRACE_GET_THREAD_AREA
42 #define PTRACE_GET_THREAD_AREA 25 44 #define PTRACE_GET_THREAD_AREA 25
43 #endif 45 #endif
44 46
45 /* Assume that we have PTRACE_GETREGS et al. support. If we do not, 47 /* Assume that we have PTRACE_GETREGS et al. support. If we do not,
46 we'll clear this and use PTRACE_PEEKUSER instead. */ 48 we'll clear this and use PTRACE_PEEKUSER instead. */
47 static int have_ptrace_regsets = 1; 49 static int have_ptrace_regsets = 1;
48 50
49 /* Whether or not to print the mirrored debug registers. */ 51 /* Whether or not to print the mirrored debug registers. */
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 else if (regno == mips_regnum (gdbarch)->badvaddr) 89 else if (regno == mips_regnum (gdbarch)->badvaddr)
88 regaddr = store? (CORE_ADDR) -1 : BADVADDR; 90 regaddr = store? (CORE_ADDR) -1 : BADVADDR;
89 else if (regno == mips_regnum (gdbarch)->lo) 91 else if (regno == mips_regnum (gdbarch)->lo)
90 regaddr = MMLO; 92 regaddr = MMLO;
91 else if (regno == mips_regnum (gdbarch)->hi) 93 else if (regno == mips_regnum (gdbarch)->hi)
92 regaddr = MMHI; 94 regaddr = MMHI;
93 else if (regno == mips_regnum (gdbarch)->fp_control_status) 95 else if (regno == mips_regnum (gdbarch)->fp_control_status)
94 regaddr = FPC_CSR; 96 regaddr = FPC_CSR;
95 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision) 97 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
96 regaddr = store? (CORE_ADDR) -1 : FPC_EIR; 98 regaddr = store? (CORE_ADDR) -1 : FPC_EIR;
99 else if (mips_regnum (gdbarch)->dspacc != -1
100 && regno >= mips_regnum (gdbarch)->dspacc
101 && regno < mips_regnum (gdbarch)->dspacc + 6)
102 regaddr = DSP_BASE + (regno - mips_regnum (gdbarch)->dspacc);
103 else if (regno == mips_regnum (gdbarch)->dspctl)
104 regaddr = DSP_CONTROL;
97 else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM) 105 else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM)
98 regaddr = 0; 106 regaddr = 0;
99 else 107 else
100 regaddr = (CORE_ADDR) -1; 108 regaddr = (CORE_ADDR) -1;
101 109
102 return regaddr; 110 return regaddr;
103 } 111 }
104 112
105 static CORE_ADDR 113 static CORE_ADDR
106 mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store) 114 mips64_linux_register_addr (struct gdbarch *gdbarch, int regno, int store)
(...skipping 15 matching lines...) Expand all
122 else if (regno == mips_regnum (gdbarch)->badvaddr) 130 else if (regno == mips_regnum (gdbarch)->badvaddr)
123 regaddr = store? (CORE_ADDR) -1 : MIPS64_BADVADDR; 131 regaddr = store? (CORE_ADDR) -1 : MIPS64_BADVADDR;
124 else if (regno == mips_regnum (gdbarch)->lo) 132 else if (regno == mips_regnum (gdbarch)->lo)
125 regaddr = MIPS64_MMLO; 133 regaddr = MIPS64_MMLO;
126 else if (regno == mips_regnum (gdbarch)->hi) 134 else if (regno == mips_regnum (gdbarch)->hi)
127 regaddr = MIPS64_MMHI; 135 regaddr = MIPS64_MMHI;
128 else if (regno == mips_regnum (gdbarch)->fp_control_status) 136 else if (regno == mips_regnum (gdbarch)->fp_control_status)
129 regaddr = MIPS64_FPC_CSR; 137 regaddr = MIPS64_FPC_CSR;
130 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision) 138 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
131 regaddr = store? (CORE_ADDR) -1 : MIPS64_FPC_EIR; 139 regaddr = store? (CORE_ADDR) -1 : MIPS64_FPC_EIR;
140 else if (mips_regnum (gdbarch)->dspacc != -1
141 && regno >= mips_regnum (gdbarch)->dspacc
142 && regno < mips_regnum (gdbarch)->dspacc + 6)
143 regaddr = DSP_BASE + (regno - mips_regnum (gdbarch)->dspacc);
144 else if (regno == mips_regnum (gdbarch)->dspctl)
145 regaddr = DSP_CONTROL;
132 else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM) 146 else if (mips_linux_restart_reg_p (gdbarch) && regno == MIPS_RESTART_REGNUM)
133 regaddr = 0; 147 regaddr = 0;
134 else 148 else
135 regaddr = (CORE_ADDR) -1; 149 regaddr = (CORE_ADDR) -1;
136 150
137 return regaddr; 151 return regaddr;
138 } 152 }
139 153
140 /* Fetch the thread-local storage pointer for libthread_db. */ 154 /* Fetch the thread-local storage pointer for libthread_db. */
141 155
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 else 208 else
195 mips64_fill_fpregset (regcache, 209 mips64_fill_fpregset (regcache,
196 (mips64_elf_fpregset_t *) fpregsetp, regno); 210 (mips64_elf_fpregset_t *) fpregsetp, regno);
197 } 211 }
198 212
199 213
200 /* Fetch REGNO (or all registers if REGNO == -1) from the target 214 /* Fetch REGNO (or all registers if REGNO == -1) from the target
201 using PTRACE_GETREGS et al. */ 215 using PTRACE_GETREGS et al. */
202 216
203 static void 217 static void
204 mips64_linux_regsets_fetch_registers (struct regcache *regcache, int regno) 218 mips64_linux_regsets_fetch_registers (struct target_ops *ops,
219 » » » » struct regcache *regcache, int regno)
205 { 220 {
206 struct gdbarch *gdbarch = get_regcache_arch (regcache); 221 struct gdbarch *gdbarch = get_regcache_arch (regcache);
207 int is_fp; 222 int is_fp, is_dsp;
223 int have_dsp;
224 int regi;
208 int tid; 225 int tid;
209 226
210 if (regno >= mips_regnum (gdbarch)->fp0 227 if (regno >= mips_regnum (gdbarch)->fp0
211 && regno <= mips_regnum (gdbarch)->fp0 + 32) 228 && regno <= mips_regnum (gdbarch)->fp0 + 32)
212 is_fp = 1; 229 is_fp = 1;
213 else if (regno == mips_regnum (gdbarch)->fp_control_status) 230 else if (regno == mips_regnum (gdbarch)->fp_control_status)
214 is_fp = 1; 231 is_fp = 1;
215 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision) 232 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
216 is_fp = 1; 233 is_fp = 1;
217 else 234 else
218 is_fp = 0; 235 is_fp = 0;
219 236
237 /* DSP registers are optional and not a part of any set. */
238 have_dsp = mips_regnum (gdbarch)->dspctl != -1;
239 if (!have_dsp)
240 is_dsp = 0;
241 else if (regno >= mips_regnum (gdbarch)->dspacc
242 && regno < mips_regnum (gdbarch)->dspacc + 6)
243 is_dsp = 1;
244 else if (regno == mips_regnum (gdbarch)->dspctl)
245 is_dsp = 1;
246 else
247 is_dsp = 0;
248
220 tid = ptid_get_lwp (inferior_ptid); 249 tid = ptid_get_lwp (inferior_ptid);
221 if (tid == 0) 250 if (tid == 0)
222 tid = ptid_get_pid (inferior_ptid); 251 tid = ptid_get_pid (inferior_ptid);
223 252
224 if (regno == -1 || !is_fp) 253 if (regno == -1 || (!is_fp && !is_dsp))
225 { 254 {
226 mips64_elf_gregset_t regs; 255 mips64_elf_gregset_t regs;
227 256
228 if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1) 257 if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
229 { 258 {
230 if (errno == EIO) 259 if (errno == EIO)
231 { 260 {
232 have_ptrace_regsets = 0; 261 have_ptrace_regsets = 0;
233 return; 262 return;
234 } 263 }
(...skipping 15 matching lines...) Expand all
250 { 279 {
251 have_ptrace_regsets = 0; 280 have_ptrace_regsets = 0;
252 return; 281 return;
253 } 282 }
254 perror_with_name (_("Couldn't get FP registers")); 283 perror_with_name (_("Couldn't get FP registers"));
255 } 284 }
256 285
257 mips64_supply_fpregset (regcache, 286 mips64_supply_fpregset (regcache,
258 (const mips64_elf_fpregset_t *) &fp_regs); 287 (const mips64_elf_fpregset_t *) &fp_regs);
259 } 288 }
289
290 if (is_dsp)
291 super_fetch_registers (ops, regcache, regno);
292 else if (regno == -1 && have_dsp)
293 {
294 for (regi = mips_regnum (gdbarch)->dspacc;
295 regi < mips_regnum (gdbarch)->dspacc + 6;
296 regi++)
297 super_fetch_registers (ops, regcache, regi);
298 super_fetch_registers (ops, regcache, mips_regnum (gdbarch)->dspctl);
299 }
260 } 300 }
261 301
262 /* Store REGNO (or all registers if REGNO == -1) to the target 302 /* Store REGNO (or all registers if REGNO == -1) to the target
263 using PTRACE_SETREGS et al. */ 303 using PTRACE_SETREGS et al. */
264 304
265 static void 305 static void
266 mips64_linux_regsets_store_registers (const struct regcache *regcache, 306 mips64_linux_regsets_store_registers (struct target_ops *ops,
267 » » » » int regno) 307 » » » » struct regcache *regcache, int regno)
268 { 308 {
269 struct gdbarch *gdbarch = get_regcache_arch (regcache); 309 struct gdbarch *gdbarch = get_regcache_arch (regcache);
270 int is_fp; 310 int is_fp, is_dsp;
311 int have_dsp;
312 int regi;
271 int tid; 313 int tid;
272 314
273 if (regno >= mips_regnum (gdbarch)->fp0 315 if (regno >= mips_regnum (gdbarch)->fp0
274 && regno <= mips_regnum (gdbarch)->fp0 + 32) 316 && regno <= mips_regnum (gdbarch)->fp0 + 32)
275 is_fp = 1; 317 is_fp = 1;
276 else if (regno == mips_regnum (gdbarch)->fp_control_status) 318 else if (regno == mips_regnum (gdbarch)->fp_control_status)
277 is_fp = 1; 319 is_fp = 1;
278 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision) 320 else if (regno == mips_regnum (gdbarch)->fp_implementation_revision)
279 is_fp = 1; 321 is_fp = 1;
280 else 322 else
281 is_fp = 0; 323 is_fp = 0;
282 324
325 /* DSP registers are optional and not a part of any set. */
326 have_dsp = mips_regnum (gdbarch)->dspctl != -1;
327 if (!have_dsp)
328 is_dsp = 0;
329 if (regno >= mips_regnum (gdbarch)->dspacc
330 && regno < mips_regnum (gdbarch)->dspacc + 6)
331 is_dsp = 1;
332 else if (regno == mips_regnum (gdbarch)->dspctl)
333 is_dsp = 1;
334 else
335 is_dsp = 0;
336
283 tid = ptid_get_lwp (inferior_ptid); 337 tid = ptid_get_lwp (inferior_ptid);
284 if (tid == 0) 338 if (tid == 0)
285 tid = ptid_get_pid (inferior_ptid); 339 tid = ptid_get_pid (inferior_ptid);
286 340
287 if (regno == -1 || !is_fp) 341 if (regno == -1 || (!is_fp && !is_dsp))
288 { 342 {
289 mips64_elf_gregset_t regs; 343 mips64_elf_gregset_t regs;
290 344
291 if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1) 345 if (ptrace (PTRACE_GETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
292 perror_with_name (_("Couldn't get registers")); 346 perror_with_name (_("Couldn't get registers"));
293 347
294 mips64_fill_gregset (regcache, &regs, regno); 348 mips64_fill_gregset (regcache, &regs, regno);
295 349
296 if (ptrace (PTRACE_SETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1) 350 if (ptrace (PTRACE_SETREGS, tid, 0L, (PTRACE_TYPE_ARG3) &regs) == -1)
297 perror_with_name (_("Couldn't set registers")); 351 perror_with_name (_("Couldn't set registers"));
298 } 352 }
299 353
300 if (regno == -1 || is_fp) 354 if (regno == -1 || is_fp)
301 { 355 {
302 mips64_elf_fpregset_t fp_regs; 356 mips64_elf_fpregset_t fp_regs;
303 357
304 if (ptrace (PTRACE_GETFPREGS, tid, 0L, 358 if (ptrace (PTRACE_GETFPREGS, tid, 0L,
305 (PTRACE_TYPE_ARG3) &fp_regs) == -1) 359 (PTRACE_TYPE_ARG3) &fp_regs) == -1)
306 perror_with_name (_("Couldn't get FP registers")); 360 perror_with_name (_("Couldn't get FP registers"));
307 361
308 mips64_fill_fpregset (regcache, &fp_regs, regno); 362 mips64_fill_fpregset (regcache, &fp_regs, regno);
309 363
310 if (ptrace (PTRACE_SETFPREGS, tid, 0L, 364 if (ptrace (PTRACE_SETFPREGS, tid, 0L,
311 (PTRACE_TYPE_ARG3) &fp_regs) == -1) 365 (PTRACE_TYPE_ARG3) &fp_regs) == -1)
312 perror_with_name (_("Couldn't set FP registers")); 366 perror_with_name (_("Couldn't set FP registers"));
313 } 367 }
368
369 if (is_dsp)
370 super_store_registers (ops, regcache, regno);
371 else if (regno == -1 && have_dsp)
372 {
373 for (regi = mips_regnum (gdbarch)->dspacc;
374 regi < mips_regnum (gdbarch)->dspacc + 6;
375 regi++)
376 super_store_registers (ops, regcache, regi);
377 super_store_registers (ops, regcache, mips_regnum (gdbarch)->dspctl);
378 }
314 } 379 }
315 380
316 /* Fetch REGNO (or all registers if REGNO == -1) from the target 381 /* Fetch REGNO (or all registers if REGNO == -1) from the target
317 using any working method. */ 382 using any working method. */
318 383
319 static void 384 static void
320 mips64_linux_fetch_registers (struct target_ops *ops, 385 mips64_linux_fetch_registers (struct target_ops *ops,
321 struct regcache *regcache, int regnum) 386 struct regcache *regcache, int regnum)
322 { 387 {
323 /* Unless we already know that PTRACE_GETREGS does not work, try it. */ 388 /* Unless we already know that PTRACE_GETREGS does not work, try it. */
324 if (have_ptrace_regsets) 389 if (have_ptrace_regsets)
325 mips64_linux_regsets_fetch_registers (regcache, regnum); 390 mips64_linux_regsets_fetch_registers (ops, regcache, regnum);
326 391
327 /* If we know, or just found out, that PTRACE_GETREGS does not work, fall 392 /* If we know, or just found out, that PTRACE_GETREGS does not work, fall
328 back to PTRACE_PEEKUSER. */ 393 back to PTRACE_PEEKUSER. */
329 if (!have_ptrace_regsets) 394 if (!have_ptrace_regsets)
330 super_fetch_registers (ops, regcache, regnum); 395 super_fetch_registers (ops, regcache, regnum);
331 } 396 }
332 397
333 /* Store REGNO (or all registers if REGNO == -1) to the target 398 /* Store REGNO (or all registers if REGNO == -1) to the target
334 using any working method. */ 399 using any working method. */
335 400
336 static void 401 static void
337 mips64_linux_store_registers (struct target_ops *ops, 402 mips64_linux_store_registers (struct target_ops *ops,
338 struct regcache *regcache, int regnum) 403 struct regcache *regcache, int regnum)
339 { 404 {
340 /* Unless we already know that PTRACE_GETREGS does not work, try it. */ 405 /* Unless we already know that PTRACE_GETREGS does not work, try it. */
341 if (have_ptrace_regsets) 406 if (have_ptrace_regsets)
342 mips64_linux_regsets_store_registers (regcache, regnum); 407 mips64_linux_regsets_store_registers (ops, regcache, regnum);
343 408
344 /* If we know, or just found out, that PTRACE_GETREGS does not work, fall 409 /* If we know, or just found out, that PTRACE_GETREGS does not work, fall
345 back to PTRACE_PEEKUSER. */ 410 back to PTRACE_PEEKUSER. */
346 if (!have_ptrace_regsets) 411 if (!have_ptrace_regsets)
347 super_store_registers (ops, regcache, regnum); 412 super_store_registers (ops, regcache, regnum);
348 } 413 }
349 414
350 /* Return the address in the core dump or inferior of register 415 /* Return the address in the core dump or inferior of register
351 REGNO. */ 416 REGNO. */
352 417
353 static CORE_ADDR 418 static CORE_ADDR
354 mips_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p) 419 mips_linux_register_u_offset (struct gdbarch *gdbarch, int regno, int store_p)
355 { 420 {
356 if (mips_abi_regsize (gdbarch) == 8) 421 if (mips_abi_regsize (gdbarch) == 8)
357 return mips64_linux_register_addr (gdbarch, regno, store_p); 422 return mips64_linux_register_addr (gdbarch, regno, store_p);
358 else 423 else
359 return mips_linux_register_addr (gdbarch, regno, store_p); 424 return mips_linux_register_addr (gdbarch, regno, store_p);
360 } 425 }
361 426
362 static const struct target_desc * 427 static const struct target_desc *
363 mips_linux_read_description (struct target_ops *ops) 428 mips_linux_read_description (struct target_ops *ops)
364 { 429 {
430 static int have_dsp = -1;
431
432 if (have_dsp < 0)
433 {
434 int tid;
435
436 tid = ptid_get_lwp (inferior_ptid);
437 if (tid == 0)
438 tid = ptid_get_pid (inferior_ptid);
439
440 ptrace (PTRACE_PEEKUSER, tid, DSP_CONTROL, 0);
441 switch (errno)
442 {
443 case 0:
444 have_dsp = 1;
445 break;
446 case EIO:
447 have_dsp = 0;
448 break;
449 default:
450 perror_with_name (_("Couldn't check DSP support"));
451 break;
452 }
453 }
454
365 /* Report that target registers are a size we know for sure 455 /* Report that target registers are a size we know for sure
366 that we can get from ptrace. */ 456 that we can get from ptrace. */
367 if (_MIPS_SIM == _ABIO32) 457 if (_MIPS_SIM == _ABIO32)
368 return tdesc_mips_linux; 458 return have_dsp ? tdesc_mips_dsp_linux : tdesc_mips_linux;
369 else 459 else
370 return tdesc_mips64_linux; 460 return have_dsp ? tdesc_mips64_dsp_linux : tdesc_mips64_linux;
371 } 461 }
372 462
373 #ifndef PTRACE_GET_WATCH_REGS 463 #ifndef PTRACE_GET_WATCH_REGS
374 # define PTRACE_GET_WATCH_REGS 0xd0 464 # define PTRACE_GET_WATCH_REGS 0xd0
375 #endif 465 #endif
376 466
377 #ifndef PTRACE_SET_WATCH_REGS 467 #ifndef PTRACE_SET_WATCH_REGS
378 # define PTRACE_SET_WATCH_REGS 0xd1 468 # define PTRACE_SET_WATCH_REGS 0xd1
379 #endif 469 #endif
380 470
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
878 if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1) 968 if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1)
879 perror_with_name (_("Couldn't write debug register")); 969 perror_with_name (_("Couldn't write debug register"));
880 } 970 }
881 return 0; 971 return 0;
882 } 972 }
883 973
884 /* linux_nat new_thread implementation. Write the mirrored watch 974 /* linux_nat new_thread implementation. Write the mirrored watch
885 register values for the new thread. */ 975 register values for the new thread. */
886 976
887 static void 977 static void
888 mips_linux_new_thread (ptid_t ptid) 978 mips_linux_new_thread (struct lwp_info *lp)
889 { 979 {
890 int tid; 980 int tid;
891 981
892 if (!mips_linux_read_watch_registers (0)) 982 if (!mips_linux_read_watch_registers (0))
893 return; 983 return;
894 984
895 tid = ptid_get_lwp (ptid); 985 tid = ptid_get_lwp (lp->ptid);
896 if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1) 986 if (ptrace (PTRACE_SET_WATCH_REGS, tid, &watch_mirror) == -1)
897 perror_with_name (_("Couldn't write debug register")); 987 perror_with_name (_("Couldn't write debug register"));
898 } 988 }
899 989
900 /* Fill in the watch registers with the currently cached watches. */ 990 /* Fill in the watch registers with the currently cached watches. */
901 991
902 static void 992 static void
903 populate_regs_from_watches (struct pt_watch_regs *regs) 993 populate_regs_from_watches (struct pt_watch_regs *regs)
904 { 994 {
905 struct mips_watchpoint *w; 995 struct mips_watchpoint *w;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 t->to_stopped_data_address = mips_linux_stopped_data_address; 1171 t->to_stopped_data_address = mips_linux_stopped_data_address;
1082 t->to_region_ok_for_hw_watchpoint = mips_linux_region_ok_for_hw_watchpoint; 1172 t->to_region_ok_for_hw_watchpoint = mips_linux_region_ok_for_hw_watchpoint;
1083 1173
1084 t->to_read_description = mips_linux_read_description; 1174 t->to_read_description = mips_linux_read_description;
1085 1175
1086 linux_nat_add_target (t); 1176 linux_nat_add_target (t);
1087 linux_nat_set_new_thread (t, mips_linux_new_thread); 1177 linux_nat_set_new_thread (t, mips_linux_new_thread);
1088 1178
1089 /* Initialize the standard target descriptions. */ 1179 /* Initialize the standard target descriptions. */
1090 initialize_tdesc_mips_linux (); 1180 initialize_tdesc_mips_linux ();
1181 initialize_tdesc_mips_dsp_linux ();
1091 initialize_tdesc_mips64_linux (); 1182 initialize_tdesc_mips64_linux ();
1183 initialize_tdesc_mips64_dsp_linux ();
1092 } 1184 }
OLDNEW
« no previous file with comments | « gdb/minsyms.c ('k') | gdb/mips-linux-tdep.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698