OLD | NEW |
1 /* Cell SPU GNU/Linux multi-architecture debugging support. | 1 /* Cell SPU GNU/Linux multi-architecture debugging support. |
2 Copyright (C) 2009-2012 Free Software Foundation, Inc. | 2 Copyright (C) 2009-2012 Free Software Foundation, Inc. |
3 | 3 |
4 Contributed by Ulrich Weigand <uweigand@de.ibm.com>. | 4 Contributed by Ulrich Weigand <uweigand@de.ibm.com>. |
5 | 5 |
6 This file is part of GDB. | 6 This file is part of GDB. |
7 | 7 |
8 This program is free software; you can redistribute it and/or modify | 8 This program is free software; you can redistribute it and/or modify |
9 it under the terms of the GNU General Public License as published by | 9 it under the terms of the GNU General Public License as published by |
10 the Free Software Foundation; either version 3 of the License, or | 10 the Free Software Foundation; either version 3 of the License, or |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
54 /* If the PPU thread is currently stopped on a spu_run system call, | 54 /* If the PPU thread is currently stopped on a spu_run system call, |
55 return to FD and ADDR the file handle and NPC parameter address | 55 return to FD and ADDR the file handle and NPC parameter address |
56 used with the system call. Return non-zero if successful. */ | 56 used with the system call. Return non-zero if successful. */ |
57 static int | 57 static int |
58 parse_spufs_run (ptid_t ptid, int *fd, CORE_ADDR *addr) | 58 parse_spufs_run (ptid_t ptid, int *fd, CORE_ADDR *addr) |
59 { | 59 { |
60 enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch); | 60 enum bfd_endian byte_order = gdbarch_byte_order (target_gdbarch); |
61 struct gdbarch_tdep *tdep; | 61 struct gdbarch_tdep *tdep; |
62 struct regcache *regcache; | 62 struct regcache *regcache; |
63 char buf[4]; | 63 char buf[4]; |
64 CORE_ADDR pc; | |
65 ULONGEST regval; | 64 ULONGEST regval; |
66 | 65 |
67 /* If we're not on PPU, there's nothing to detect. */ | 66 /* If we're not on PPU, there's nothing to detect. */ |
68 if (gdbarch_bfd_arch_info (target_gdbarch)->arch != bfd_arch_powerpc) | 67 if (gdbarch_bfd_arch_info (target_gdbarch)->arch != bfd_arch_powerpc) |
69 return 0; | 68 return 0; |
70 | 69 |
71 /* Get PPU-side registers. */ | 70 /* Get PPU-side registers. */ |
72 regcache = get_thread_arch_regcache (ptid, target_gdbarch); | 71 regcache = get_thread_arch_regcache (ptid, target_gdbarch); |
73 tdep = gdbarch_tdep (target_gdbarch); | 72 tdep = gdbarch_tdep (target_gdbarch); |
74 | 73 |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
394 spu_ops.to_fetch_registers = spu_fetch_registers; | 393 spu_ops.to_fetch_registers = spu_fetch_registers; |
395 spu_ops.to_store_registers = spu_store_registers; | 394 spu_ops.to_store_registers = spu_store_registers; |
396 spu_ops.to_xfer_partial = spu_xfer_partial; | 395 spu_ops.to_xfer_partial = spu_xfer_partial; |
397 spu_ops.to_search_memory = spu_search_memory; | 396 spu_ops.to_search_memory = spu_search_memory; |
398 spu_ops.to_region_ok_for_hw_watchpoint = spu_region_ok_for_hw_watchpoint; | 397 spu_ops.to_region_ok_for_hw_watchpoint = spu_region_ok_for_hw_watchpoint; |
399 spu_ops.to_thread_architecture = spu_thread_architecture; | 398 spu_ops.to_thread_architecture = spu_thread_architecture; |
400 spu_ops.to_stratum = arch_stratum; | 399 spu_ops.to_stratum = arch_stratum; |
401 spu_ops.to_magic = OPS_MAGIC; | 400 spu_ops.to_magic = OPS_MAGIC; |
402 } | 401 } |
403 | 402 |
| 403 /* -Wmissing-prototypes */ |
| 404 extern initialize_file_ftype _initialize_spu_multiarch; |
| 405 |
404 void | 406 void |
405 _initialize_spu_multiarch (void) | 407 _initialize_spu_multiarch (void) |
406 { | 408 { |
407 /* Install ourselves on the target stack. */ | 409 /* Install ourselves on the target stack. */ |
408 init_spu_ops (); | 410 init_spu_ops (); |
409 add_target (&spu_ops); | 411 add_target (&spu_ops); |
410 | 412 |
411 /* Install observers to watch for SPU objects. */ | 413 /* Install observers to watch for SPU objects. */ |
412 observer_attach_inferior_created (spu_multiarch_inferior_created); | 414 observer_attach_inferior_created (spu_multiarch_inferior_created); |
413 observer_attach_solib_loaded (spu_multiarch_solib_loaded); | 415 observer_attach_solib_loaded (spu_multiarch_solib_loaded); |
414 observer_attach_solib_unloaded (spu_multiarch_solib_unloaded); | 416 observer_attach_solib_unloaded (spu_multiarch_solib_unloaded); |
415 } | 417 } |
416 | 418 |
OLD | NEW |