ChangeLog:
* Makefile.in (ppc_linux_tdep_h): New macro. (powerpc_32l_c, powerpc_altivec32_c, powerpc_altivec32l_c): Likewise. (powerpc_64l_c, powerpc_altivec64_c, powerpc_altivec64l_c): Likewise. (powerpc_e500l_c): Likewise. (ppc-linux-nat.o): Update dependencies. (ppc-linux-tdep.o): Update dependencies. (rs6000-tdep.o): Update dependencies. * ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Remove. (ppc_linux_svr4_fetch_link_map_offsets): Remove. (ppc_linux_gregset, ppc_linux_fpregset): Move to ppc-linux-tdep.h (ppc_supply_reg, ppc_collect_reg): Add prototypes. (tdesc_powerpc_e500): Remove. * rs6000.c: Include "features/rs6000/powerpc-altivec32.c" and "features/rs6000/powerpc-altivec64.c". (ppc_supply_reg, ppc_collect_reg): Make global. (variants): Use tdesc_powerpc_32 for "powerpc" and tdesc_powerpc_altivec64 for "powerpc64". (_initialize_rs6000_tdep): Initialize AltiVec descriptions. * ppc-linux-tdep.h: New file. * ppc-linux-tdep.c: Include "ppc-linux-tdep.c". Include "features/rs6000/powerpc-32l.c". Include "features/rs6000/powerpc-altivec32l.c". Include "features/rs6000/powerpc-64l.c". Include "features/rs6000/powerpc-altivec64l.c". Include "features/rs6000/powerpc-e500l.c". (ppc_linux_supply_gregset): New function. (ppc_linux_collect_gregset): Handle orig_r3 and trap registers. (ppc32_linux_gregset): Use ppc_linux_supply_gregset. (ppc64_linux_gregset): Likewise. (ppc_linux_sigtramp_cache): Handle orig_r3 and trap registers. (ppc_linux_trap_reg_p): New function. (ppc_linux_write_pc): New function. (ppc_linux_core_read_description): New function. (ppc_linux_init_abi): Install ppc_linux_write_pc and ppc_linux_core_read_description. Install orig_r3 and trap registers if present in the target description. (_initialize_ppc_linux_tdep): Initialize Linux target descriptions. * ppc-linux-nat.c: Include "ppc-linux-tdep.h". (PT_ORIG_R3, PT_TRAP): Define if necessary. (ppc_register_u_addr): Handle orig_r3 and trap registers. (fetch_ppc_registers): Likewise. (store_ppc_registers): Likewise. (store_register): Likewise. (ppc_linux_read_description): Check whether AltiVec is supported. Check whether inferior is 32-bit or 64-bit. Return the appropriate Linux target description. * features/Makefile (WHICH): Use rs6000/powerpc-32l and rs6000/powerpc-altivec32l instead of rs6000/powerpc-32. Use rs6000/powerpc-64l and rs6000/powerpc-altivec64l instead of rs6000/powerpc-64. Use rs6000/powerpc-e500l instead of rs6000/powerpc-e500. Update -expedite variables accordingly. * features/rs6000/power-spe.xml: Use regnum 73 for "acc". * features/rs6000/powerpc-32.xml: Do not include power-altivec.xml. * features/rs6000/powerpc-64.xml: Do not include power-altivec.xml. * features/rs6000/powerpc-e500.c: Regenerate. * features/rs6000/powerpc-32.c: Regenerate. * features/rs6000/powerpc-64.c: Regenerate. * features/rs6000/power-linux.xml: New file. * features/rs6000/power64-linux.xml: New file. * features/rs6000/powerpc-32l.xml: New file. * features/rs6000/powerpc-altivec32l.xml: New file. * features/rs6000/powerpc-64l.xml: New file. * features/rs6000/powerpc-altivec64l.xml: New file. * features/rs6000/powerpc-e500l.xml: New file. * features/rs6000/powerpc-32l.c: New (generated) file. * features/rs6000/powerpc-altivec32l.c: New (generated) file. * features/rs6000/powerpc-64l.c: New (generated) file. * features/rs6000/powerpc-altivec64l.c: New (generated) file. * features/rs6000/powerpc-e500l.xml: New (generated) file. * regformats/reg-ppc.dat: Remove. * regformats/reg-ppc64.dat: Remove. * regformats/rs6000/powerpc-32.dat: Remove. * regformats/rs6000/powerpc-64.dat: Remove. * regformats/rs6000/powerpc-e500.dat: Remove. * regformats/rs6000/powerpc-32l.dat: New (generated) file. * regformats/rs6000/powerpc-altivec32l.dat: New (generated) file. * regformats/rs6000/powerpc-64l.dat: New (generated) file. * regformats/rs6000/powerpc-altivec64l.dat: New (generated) file. * regformats/rs6000/powerpc-e500l.dat: New (generated) file. gdbserver/ChangeLog: * configure.srv (powerpc*-*-linux*): Set srv_regobj to powerpc-32l.o, powerpc-altivec32l.o, powerpc-e500l.o, powerpc-64l.o, and powerpc-altivec64l.o. Remove rs6000/powerpc-32.xml, rs6000/powerpc-64.xml, and rs6000/powerpc-e500.xml; add rs6000/powerpc-32l.xml, rs6000/powerpc-altivec32l.xml, rs6000/powerpc-e500l.xml, rs6000/powerpc-64l.xml, rs6000/powerpc-altivec64l.xml, rs6000/power-linux.xml, and rs6000/power64-linux.xml to srv_xmlfiles. * Makefile.in (reg-ppc.o, reg-ppc.c): Remove, replace by ... (powerpc-32l.o, powerpc-32l.c): ... these new rules. (powerpc-32.o, powerpc-32.c): Remove, replace by ... (powerpc-altivec32l.o, powerpc-altivec32l.c): ... these new rules. (powerpc-e500.o, powerpc-e500.c): Remove, replace by ... (powerpc-e500l.o, powerpc-e500l.c): ... these new rules. (reg-ppc64.o, reg-ppc64.c): Remove, replace by ... (powerpc-64l.o, powerpc-64l.c): ... these new rules. (powerpc-64.o, powerpc-64.c): Remove, replace by ... (powerpc-altivec64l.o, powerpc-altivec64l.c): ... these new rules. (clean): Update. * linux-ppc-low.c (init_registers_ppc): Remove, replace by ... (init_registers_powerpc_32l): ... this new prototype. (init_registers_powerpc_32): Remove, replace by ... (init_registers_powerpc_altivec32l): ... this new prototype. (init_registers_powerpc_e500): Remove, replace by ... (init_registers_powerpc_e500l): ... this new prototype. (init_registers_ppc64): Remove, replace by ... (init_registers_powerpc_64l): ... this new prototype. (init_registers_powerpc_64): Remove, replace by ... (init_registers_powerpc_altivec64l): ... this new prototype. (ppc_num_regs): Set to 73. (PT_ORIG_R3, PT_TRAP): Define if necessary. (ppc_regmap, ppc_regmap_e500): Add values for orig_r3 and trap. (ppc_cannot_store_register): Handle orig_r3 and trap. (ppc_arch_setup): Update init_registers_... calls. (ppc_fill_gregset): Handle orig_r3 and trap. * inferiors.c (clear_inferiors): Reset current_inferior.
This commit is contained in:
parent
82f68b1c00
commit
7284e1bed8
@ -1,3 +1,94 @@
|
||||
2008-05-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* Makefile.in (ppc_linux_tdep_h): New macro.
|
||||
(powerpc_32l_c, powerpc_altivec32_c, powerpc_altivec32l_c): Likewise.
|
||||
(powerpc_64l_c, powerpc_altivec64_c, powerpc_altivec64l_c): Likewise.
|
||||
(powerpc_e500l_c): Likewise.
|
||||
(ppc-linux-nat.o): Update dependencies.
|
||||
(ppc-linux-tdep.o): Update dependencies.
|
||||
(rs6000-tdep.o): Update dependencies.
|
||||
|
||||
* ppc-tdep.h (ppc_linux_memory_remove_breakpoint): Remove.
|
||||
(ppc_linux_svr4_fetch_link_map_offsets): Remove.
|
||||
(ppc_linux_gregset, ppc_linux_fpregset): Move to ppc-linux-tdep.h
|
||||
(ppc_supply_reg, ppc_collect_reg): Add prototypes.
|
||||
(tdesc_powerpc_e500): Remove.
|
||||
|
||||
* rs6000.c: Include "features/rs6000/powerpc-altivec32.c"
|
||||
and "features/rs6000/powerpc-altivec64.c".
|
||||
(ppc_supply_reg, ppc_collect_reg): Make global.
|
||||
(variants): Use tdesc_powerpc_32 for "powerpc" and
|
||||
tdesc_powerpc_altivec64 for "powerpc64".
|
||||
(_initialize_rs6000_tdep): Initialize AltiVec descriptions.
|
||||
|
||||
* ppc-linux-tdep.h: New file.
|
||||
|
||||
* ppc-linux-tdep.c: Include "ppc-linux-tdep.c".
|
||||
Include "features/rs6000/powerpc-32l.c".
|
||||
Include "features/rs6000/powerpc-altivec32l.c".
|
||||
Include "features/rs6000/powerpc-64l.c".
|
||||
Include "features/rs6000/powerpc-altivec64l.c".
|
||||
Include "features/rs6000/powerpc-e500l.c".
|
||||
(ppc_linux_supply_gregset): New function.
|
||||
(ppc_linux_collect_gregset): Handle orig_r3 and trap registers.
|
||||
(ppc32_linux_gregset): Use ppc_linux_supply_gregset.
|
||||
(ppc64_linux_gregset): Likewise.
|
||||
(ppc_linux_sigtramp_cache): Handle orig_r3 and trap registers.
|
||||
(ppc_linux_trap_reg_p): New function.
|
||||
(ppc_linux_write_pc): New function.
|
||||
(ppc_linux_core_read_description): New function.
|
||||
(ppc_linux_init_abi): Install ppc_linux_write_pc and
|
||||
ppc_linux_core_read_description. Install orig_r3 and trap
|
||||
registers if present in the target description.
|
||||
(_initialize_ppc_linux_tdep): Initialize Linux target descriptions.
|
||||
|
||||
* ppc-linux-nat.c: Include "ppc-linux-tdep.h".
|
||||
(PT_ORIG_R3, PT_TRAP): Define if necessary.
|
||||
(ppc_register_u_addr): Handle orig_r3 and trap registers.
|
||||
(fetch_ppc_registers): Likewise.
|
||||
(store_ppc_registers): Likewise.
|
||||
(store_register): Likewise.
|
||||
(ppc_linux_read_description): Check whether AltiVec is supported.
|
||||
Check whether inferior is 32-bit or 64-bit. Return the appropriate
|
||||
Linux target description.
|
||||
|
||||
* features/Makefile (WHICH): Use rs6000/powerpc-32l and
|
||||
rs6000/powerpc-altivec32l instead of rs6000/powerpc-32.
|
||||
Use rs6000/powerpc-64l and rs6000/powerpc-altivec64l instead
|
||||
of rs6000/powerpc-64. Use rs6000/powerpc-e500l instead of
|
||||
rs6000/powerpc-e500. Update -expedite variables accordingly.
|
||||
|
||||
* features/rs6000/power-spe.xml: Use regnum 73 for "acc".
|
||||
* features/rs6000/powerpc-32.xml: Do not include power-altivec.xml.
|
||||
* features/rs6000/powerpc-64.xml: Do not include power-altivec.xml.
|
||||
* features/rs6000/powerpc-e500.c: Regenerate.
|
||||
* features/rs6000/powerpc-32.c: Regenerate.
|
||||
* features/rs6000/powerpc-64.c: Regenerate.
|
||||
|
||||
* features/rs6000/power-linux.xml: New file.
|
||||
* features/rs6000/power64-linux.xml: New file.
|
||||
* features/rs6000/powerpc-32l.xml: New file.
|
||||
* features/rs6000/powerpc-altivec32l.xml: New file.
|
||||
* features/rs6000/powerpc-64l.xml: New file.
|
||||
* features/rs6000/powerpc-altivec64l.xml: New file.
|
||||
* features/rs6000/powerpc-e500l.xml: New file.
|
||||
* features/rs6000/powerpc-32l.c: New (generated) file.
|
||||
* features/rs6000/powerpc-altivec32l.c: New (generated) file.
|
||||
* features/rs6000/powerpc-64l.c: New (generated) file.
|
||||
* features/rs6000/powerpc-altivec64l.c: New (generated) file.
|
||||
* features/rs6000/powerpc-e500l.xml: New (generated) file.
|
||||
|
||||
* regformats/reg-ppc.dat: Remove.
|
||||
* regformats/reg-ppc64.dat: Remove.
|
||||
* regformats/rs6000/powerpc-32.dat: Remove.
|
||||
* regformats/rs6000/powerpc-64.dat: Remove.
|
||||
* regformats/rs6000/powerpc-e500.dat: Remove.
|
||||
* regformats/rs6000/powerpc-32l.dat: New (generated) file.
|
||||
* regformats/rs6000/powerpc-altivec32l.dat: New (generated) file.
|
||||
* regformats/rs6000/powerpc-64l.dat: New (generated) file.
|
||||
* regformats/rs6000/powerpc-altivec64l.dat: New (generated) file.
|
||||
* regformats/rs6000/powerpc-e500l.dat: New (generated) file.
|
||||
|
||||
2008-05-03 Pedro Alves <pedro@codesourcery.com>
|
||||
|
||||
* thread.c (delete_thread): Call observer_notify_thread_exit.
|
||||
|
@ -859,6 +859,7 @@ p_lang_h = p-lang.h
|
||||
ppcnbsd_tdep_h = ppcnbsd-tdep.h
|
||||
ppcobsd_tdep_h = ppcobsd-tdep.h
|
||||
ppc_tdep_h = ppc-tdep.h
|
||||
ppc_linux_tdep_h = ppc-linux-tdep.h
|
||||
proc_utils_h = proc-utils.h
|
||||
prologue_value_h = prologue-value.h
|
||||
regcache_h = regcache.h
|
||||
@ -970,6 +971,9 @@ arm_with_iwmmxt_c = $(srcdir)/features/arm-with-iwmmxt.c $(features_headers)
|
||||
mips_linux_c = $(srcdir)/features/mips-linux.c $(features_headers)
|
||||
mips64_linux_c = $(srcdir)/features/mips64-linux.c $(features_headers)
|
||||
powerpc_32_c = $(srcdir)/features/rs6000/powerpc-32.c $(features_headers)
|
||||
powerpc_32l_c = $(srcdir)/features/rs6000/powerpc-32l.c $(features_headers)
|
||||
powerpc_altivec32_c = $(srcdir)/features/rs6000/powerpc-altivec32.c $(features_headers)
|
||||
powerpc_altivec32l_c = $(srcdir)/features/rs6000/powerpc-altivec32l.c $(features_headers)
|
||||
powerpc_403_c = $(srcdir)/features/rs6000/powerpc-403.c $(features_headers)
|
||||
powerpc_403gc_c = $(srcdir)/features/rs6000/powerpc-403gc.c $(features_headers)
|
||||
powerpc_505_c = $(srcdir)/features/rs6000/powerpc-505.c $(features_headers)
|
||||
@ -978,10 +982,14 @@ powerpc_602_c = $(srcdir)/features/rs6000/powerpc-602.c $(features_headers)
|
||||
powerpc_603_c = $(srcdir)/features/rs6000/powerpc-603.c $(features_headers)
|
||||
powerpc_604_c = $(srcdir)/features/rs6000/powerpc-604.c $(features_headers)
|
||||
powerpc_64_c = $(srcdir)/features/rs6000/powerpc-64.c $(features_headers)
|
||||
powerpc_64l_c = $(srcdir)/features/rs6000/powerpc-64l.c $(features_headers)
|
||||
powerpc_altivec64_c = $(srcdir)/features/rs6000/powerpc-altivec64.c $(features_headers)
|
||||
powerpc_altivec64l_c = $(srcdir)/features/rs6000/powerpc-altivec64l.c $(features_headers)
|
||||
powerpc_7400_c = $(srcdir)/features/rs6000/powerpc-7400.c $(features_headers)
|
||||
powerpc_750_c = $(srcdir)/features/rs6000/powerpc-750.c $(features_headers)
|
||||
powerpc_860_c = $(srcdir)/features/rs6000/powerpc-860.c $(features_headers)
|
||||
powerpc_e500_c = $(srcdir)/features/rs6000/powerpc-e500.c $(features_headers)
|
||||
powerpc_e500l_c = $(srcdir)/features/rs6000/powerpc-e500l.c $(features_headers)
|
||||
rs6000_c = $(srcdir)/features/rs6000/rs6000.c $(features_headers)
|
||||
|
||||
# Header files that need to have srcdir added. Note that in the cases
|
||||
@ -2592,13 +2600,15 @@ ppcbug-rom.o: ppcbug-rom.c $(defs_h) $(gdbcore_h) $(target_h) $(monitor_h) \
|
||||
$(serial_h) $(regcache_h)
|
||||
ppc-linux-nat.o: ppc-linux-nat.c $(defs_h) $(gdb_string_h) $(frame_h) \
|
||||
$(inferior_h) $(gdbcore_h) $(regcache_h) $(gdb_assert_h) \
|
||||
$(gdb_wait_h) $(gregset_h) $(ppc_tdep_h) $(target_h) \
|
||||
$(linux_nat_h)
|
||||
$(gdb_wait_h) $(gregset_h) $(ppc_tdep_h) $(ppc_linux_tdep_h) \
|
||||
$(target_h) $(linux_nat_h)
|
||||
ppc-linux-tdep.o: ppc-linux-tdep.c $(defs_h) $(frame_h) $(inferior_h) \
|
||||
$(symtab_h) $(target_h) $(gdbcore_h) $(gdbcmd_h) $(symfile_h) \
|
||||
$(objfiles_h) $(regcache_h) $(value_h) $(osabi_h) $(regset_h) \
|
||||
$(solib_svr4_h) $(ppc_tdep_h) $(trad_frame_h) $(frame_unwind_h) \
|
||||
$(tramp_frame_h)
|
||||
$(solib_svr4_h) $(ppc_tdep_h) $(ppc_linux_tdep_h) $(trad_frame_h) \
|
||||
$(frame_unwind_h) $(tramp_frame_h) \
|
||||
$(powerpc_32l_c) $(powerpc_altivec32l_c) $(powerpc_e500l_c) \
|
||||
$(powerpc_64l_c) $(powerpc_altivec64l_c)
|
||||
ppcnbsd-nat.o: ppcnbsd-nat.c $(defs_h) $(inferior_h) $(gdb_assert_h) \
|
||||
$(gdbcore_h) $(regcache_h) $(bsd_kvm_h) $(ppc_tdep_h) \
|
||||
$(ppcnbsd_tdep_h) $(inf_ptrace_h)
|
||||
@ -2684,10 +2694,11 @@ rs6000-tdep.o: rs6000-tdep.c $(defs_h) $(frame_h) $(inferior_h) $(symtab_h) \
|
||||
$(ppc_tdep_h) $(gdb_assert_h) $(dis_asm_h) $(trad_frame_h) \
|
||||
$(frame_unwind_h) $(frame_base_h) $(rs6000_tdep_h) $(dwarf2_frame_h) \
|
||||
$(target_descriptions) $(user_regs_h) $(elf_ppc_h) \
|
||||
$(powerpc_32_c) $(powerpc_403_c) $(powerpc_403gc_c) $(powerpc_505_c) \
|
||||
$(powerpc_601_c) $(powerpc_602_c) $(powerpc_603_c) $(powerpc_604_c) \
|
||||
$(powerpc_64_c) $(powerpc_7400_c) $(powerpc_750_c) $(powerpc_860_c) \
|
||||
$(powerpc_e500_c) $(rs6000_c)
|
||||
$(powerpc_32_c) $(powerpc_altivec32_c) $(powerpc_403_c) \
|
||||
$(powerpc_403gc_c) $(powerpc_505_c) $(powerpc_601_c) \
|
||||
$(powerpc_602_c) $(powerpc_603_c) $(powerpc_604_c) \
|
||||
$(powerpc_64_c) $(powerpc_altivec64_c) $(powerpc_7400_c) \
|
||||
$(powerpc_750_c) $(powerpc_860_c) $(powerpc_e500_c) $(rs6000_c)
|
||||
rs6000-aix-tdep.o: rs6000-aix-tdep.c $(defs_h) $(gdb_string_h) $(osabi_h) \
|
||||
$(regcache_h) $(regset_h) $(rs6000_tdep_h) $(ppc_tdep_h)
|
||||
s390-nat.o: s390-nat.c $(defs_h) $(regcache_h) $(inferior_h) \
|
||||
|
@ -32,15 +32,18 @@
|
||||
# make GDB=/path/to/gdb XMLTOC="xml files" cfiles
|
||||
|
||||
WHICH = arm-with-iwmmxt mips-linux mips64-linux \
|
||||
rs6000/powerpc-32 rs6000/powerpc-e500 rs6000/powerpc-64
|
||||
rs6000/powerpc-32l rs6000/powerpc-altivec32l rs6000/powerpc-e500l \
|
||||
rs6000/powerpc-64l rs6000/powerpc-altivec64l
|
||||
|
||||
# Record which registers should be sent to GDB by default after stop.
|
||||
arm-with-iwmmxt-expedite = r11,sp,pc
|
||||
mips-linux-expedite = r29,pc
|
||||
mips64-linux-expedite = r29,pc
|
||||
rs6000/powerpc-32-expedite = r1,pc
|
||||
rs6000/powerpc-e500-expedite = r1,pc
|
||||
rs6000/powerpc-64-expedite = r1,pc
|
||||
rs6000/powerpc-32l-expedite = r1,pc
|
||||
rs6000/powerpc-altivec32l-expedite = r1,pc
|
||||
rs6000/powerpc-e500l-expedite = r1,pc
|
||||
rs6000/powerpc-64l-expedite = r1,pc
|
||||
rs6000/powerpc-altivec64l-expedite = r1,pc
|
||||
|
||||
XSLTPROC = xsltproc
|
||||
outdir = ../regformats
|
||||
|
12
gdb/features/rs6000/power-linux.xml
Normal file
12
gdb/features/rs6000/power-linux.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.power.linux">
|
||||
<reg name="orig_r3" bitsize="32" regnum="71"/>
|
||||
<reg name="trap" bitsize="32"/>
|
||||
</feature>
|
@ -40,6 +40,6 @@
|
||||
<reg name="ev30h" bitsize="32"/>
|
||||
<reg name="ev31h" bitsize="32"/>
|
||||
|
||||
<reg name="acc" bitsize="64" regnum="71"/>
|
||||
<reg name="acc" bitsize="64" regnum="73"/>
|
||||
<reg name="spefscr" bitsize="32"/>
|
||||
</feature>
|
||||
|
12
gdb/features/rs6000/power64-linux.xml
Normal file
12
gdb/features/rs6000/power64-linux.xml
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE feature SYSTEM "gdb-target.dtd">
|
||||
<feature name="org.gnu.gdb.power.linux">
|
||||
<reg name="orig_r3" bitsize="64" regnum="71"/>
|
||||
<reg name="trap" bitsize="64"/>
|
||||
</feature>
|
@ -89,76 +89,5 @@ initialize_tdesc_powerpc_32 (void)
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_32 = result;
|
||||
}
|
||||
|
@ -13,5 +13,4 @@
|
||||
<architecture>powerpc:common</architecture>
|
||||
<xi:include href="power-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
||||
|
97
gdb/features/rs6000/powerpc-32l.c
Normal file
97
gdb/features/rs6000/powerpc-32l.c
Normal file
@ -0,0 +1,97 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-32l.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_32l;
|
||||
static void
|
||||
initialize_tdesc_powerpc_32l (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
|
||||
tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
|
||||
|
||||
tdesc_powerpc_32l = result;
|
||||
}
|
17
gdb/features/rs6000/powerpc-32l.xml
Normal file
17
gdb/features/rs6000/powerpc-32l.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes Linux-only special "registers". -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common</architecture>
|
||||
<xi:include href="power-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-linux.xml"/>
|
||||
</target>
|
@ -89,76 +89,5 @@ initialize_tdesc_powerpc_64 (void)
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_64 = result;
|
||||
}
|
||||
|
@ -13,5 +13,4 @@
|
||||
<architecture>powerpc:common64</architecture>
|
||||
<xi:include href="power64-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
||||
|
97
gdb/features/rs6000/powerpc-64l.c
Normal file
97
gdb/features/rs6000/powerpc-64l.c
Normal file
@ -0,0 +1,97 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-64l.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_64l;
|
||||
static void
|
||||
initialize_tdesc_powerpc_64l (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
|
||||
tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
|
||||
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
|
||||
|
||||
tdesc_powerpc_64l = result;
|
||||
}
|
17
gdb/features/rs6000/powerpc-64l.xml
Normal file
17
gdb/features/rs6000/powerpc-64l.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes Linux-only special "registers". -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common64</architecture>
|
||||
<xi:include href="power64-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power64-linux.xml"/>
|
||||
</target>
|
164
gdb/features/rs6000/powerpc-altivec32.c
Normal file
164
gdb/features/rs6000/powerpc-altivec32.c
Normal file
@ -0,0 +1,164 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-altivec32.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_altivec32;
|
||||
static void
|
||||
initialize_tdesc_powerpc_altivec32 (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_altivec32 = result;
|
||||
}
|
17
gdb/features/rs6000/powerpc-altivec32.xml
Normal file
17
gdb/features/rs6000/powerpc-altivec32.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes AltiVec vector registers. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common</architecture>
|
||||
<xi:include href="power-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
168
gdb/features/rs6000/powerpc-altivec32l.c
Normal file
168
gdb/features/rs6000/powerpc-altivec32l.c
Normal file
@ -0,0 +1,168 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-altivec32l.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_altivec32l;
|
||||
static void
|
||||
initialize_tdesc_powerpc_altivec32l (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
|
||||
tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_altivec32l = result;
|
||||
}
|
19
gdb/features/rs6000/powerpc-altivec32l.xml
Normal file
19
gdb/features/rs6000/powerpc-altivec32l.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes Linux-only special "registers" and AltiVec
|
||||
vector registers. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common</architecture>
|
||||
<xi:include href="power-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-linux.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
164
gdb/features/rs6000/powerpc-altivec64.c
Normal file
164
gdb/features/rs6000/powerpc-altivec64.c
Normal file
@ -0,0 +1,164 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-altivec64.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_altivec64;
|
||||
static void
|
||||
initialize_tdesc_powerpc_altivec64 (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 103, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 104, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_altivec64 = result;
|
||||
}
|
17
gdb/features/rs6000/powerpc-altivec64.xml
Normal file
17
gdb/features/rs6000/powerpc-altivec64.xml
Normal file
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes AltiVec vector registers. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common64</architecture>
|
||||
<xi:include href="power64-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
168
gdb/features/rs6000/powerpc-altivec64l.c
Normal file
168
gdb/features/rs6000/powerpc-altivec64l.c
Normal file
@ -0,0 +1,168 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-altivec64l.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_altivec64l;
|
||||
static void
|
||||
initialize_tdesc_powerpc_altivec64l (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 64, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 64, "uint64");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.fpu");
|
||||
tdesc_create_reg (feature, "f0", 32, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f1", 33, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f2", 34, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f3", 35, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f4", 36, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f5", 37, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f6", 38, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f7", 39, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f8", 40, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f9", 41, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f10", 42, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f11", 43, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f12", 44, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f13", 45, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f14", 46, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f15", 47, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f16", 48, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f17", 49, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f18", 50, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f19", 51, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f20", 52, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f21", 53, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f22", 54, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f23", 55, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f24", 56, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f25", 57, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f26", 58, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f27", 59, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f28", 60, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f29", 61, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f30", 62, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "f31", 63, 1, NULL, 64, "ieee_double");
|
||||
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
|
||||
tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 64, "int");
|
||||
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
|
||||
field_type = tdesc_named_type (feature, "ieee_single");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4f");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int32");
|
||||
type = init_vector_type (field_type, 4);
|
||||
TYPE_NAME (type) = xstrdup ("v4i32");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int16");
|
||||
type = init_vector_type (field_type, 8);
|
||||
TYPE_NAME (type) = xstrdup ("v8i16");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
field_type = tdesc_named_type (feature, "int8");
|
||||
type = init_vector_type (field_type, 16);
|
||||
TYPE_NAME (type) = xstrdup ("v16i8");
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
type = init_composite_type (NULL, TYPE_CODE_UNION);
|
||||
TYPE_NAME (type) = xstrdup ("vec128");
|
||||
field_type = tdesc_named_type (feature, "uint128");
|
||||
append_composite_type_field (type, xstrdup ("uint128"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4f");
|
||||
append_composite_type_field (type, xstrdup ("v4_float"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v4i32");
|
||||
append_composite_type_field (type, xstrdup ("v4_int32"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v8i16");
|
||||
append_composite_type_field (type, xstrdup ("v8_int16"), field_type);
|
||||
field_type = tdesc_named_type (feature, "v16i8");
|
||||
append_composite_type_field (type, xstrdup ("v16_int8"), field_type);
|
||||
TYPE_FLAGS (type) |= TYPE_FLAG_VECTOR;
|
||||
tdesc_record_type (feature, type);
|
||||
|
||||
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr2", 75, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr3", 76, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr4", 77, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr5", 78, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr6", 79, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr7", 80, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr8", 81, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr9", 82, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr10", 83, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr11", 84, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr12", 85, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr13", 86, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr14", 87, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr15", 88, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr16", 89, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr17", 90, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr18", 91, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr19", 92, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr20", 93, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr21", 94, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr22", 95, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr23", 96, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr24", 97, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr25", 98, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr26", 99, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr27", 100, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr28", 101, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr29", 102, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr30", 103, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vr31", 104, 1, NULL, 128, "vec128");
|
||||
tdesc_create_reg (feature, "vscr", 105, 1, "vector", 32, "int");
|
||||
tdesc_create_reg (feature, "vrsave", 106, 1, "vector", 32, "int");
|
||||
|
||||
tdesc_powerpc_altivec64l = result;
|
||||
}
|
19
gdb/features/rs6000/powerpc-altivec64l.xml
Normal file
19
gdb/features/rs6000/powerpc-altivec64l.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!-- PowerPC UISA - a PPC processor as viewed by user-level code. A UISA-only
|
||||
view of the PowerPC. Includes Linux-only special "registers" and AltiVec
|
||||
vector registers. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:common64</architecture>
|
||||
<xi:include href="power64-core.xml"/>
|
||||
<xi:include href="power-fpu.xml"/>
|
||||
<xi:include href="power64-linux.xml"/>
|
||||
<xi:include href="power-altivec.xml"/>
|
||||
</target>
|
@ -87,8 +87,8 @@ initialize_tdesc_powerpc_e500 (void)
|
||||
tdesc_create_reg (feature, "ev29h", 61, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev30h", 62, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev31h", 63, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "acc", 71, 1, NULL, 64, "int");
|
||||
tdesc_create_reg (feature, "spefscr", 72, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "acc", 73, 1, NULL, 64, "int");
|
||||
tdesc_create_reg (feature, "spefscr", 74, 1, NULL, 32, "int");
|
||||
|
||||
tdesc_powerpc_e500 = result;
|
||||
}
|
||||
|
98
gdb/features/rs6000/powerpc-e500l.c
Normal file
98
gdb/features/rs6000/powerpc-e500l.c
Normal file
@ -0,0 +1,98 @@
|
||||
/* THIS FILE IS GENERATED. Original: powerpc-e500l.xml */
|
||||
|
||||
#include "defs.h"
|
||||
#include "gdbtypes.h"
|
||||
#include "target-descriptions.h"
|
||||
|
||||
struct target_desc *tdesc_powerpc_e500l;
|
||||
static void
|
||||
initialize_tdesc_powerpc_e500l (void)
|
||||
{
|
||||
struct target_desc *result = allocate_target_description ();
|
||||
struct tdesc_feature *feature;
|
||||
struct type *field_type, *type;
|
||||
|
||||
set_tdesc_architecture (result, bfd_scan_arch ("powerpc:e500"));
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
|
||||
tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r2", 2, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r3", 3, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r4", 4, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r5", 5, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r6", 6, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r7", 7, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r8", 8, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r9", 9, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r10", 10, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r11", 11, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r12", 12, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r13", 13, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r14", 14, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r15", 15, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r16", 16, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r17", 17, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r18", 18, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r19", 19, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r20", 20, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r21", 21, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r22", 22, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r23", 23, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r24", 24, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r25", 25, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r26", 26, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r27", 27, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r28", 28, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r29", 29, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r30", 30, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "r31", 31, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "pc", 64, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "msr", 65, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "cr", 66, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "lr", 67, 1, NULL, 32, "code_ptr");
|
||||
tdesc_create_reg (feature, "ctr", 68, 1, NULL, 32, "uint32");
|
||||
tdesc_create_reg (feature, "xer", 69, 1, NULL, 32, "uint32");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.spe");
|
||||
tdesc_create_reg (feature, "ev0h", 32, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev1h", 33, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev2h", 34, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev3h", 35, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev4h", 36, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev5h", 37, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev6h", 38, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev7h", 39, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev8h", 40, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev9h", 41, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev10h", 42, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev11h", 43, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev12h", 44, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev13h", 45, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev14h", 46, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev15h", 47, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev16h", 48, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev17h", 49, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev18h", 50, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev19h", 51, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev20h", 52, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev21h", 53, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev22h", 54, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev23h", 55, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev24h", 56, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev25h", 57, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev26h", 58, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev27h", 59, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev28h", 60, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev29h", 61, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev30h", 62, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "ev31h", 63, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "acc", 73, 1, NULL, 64, "int");
|
||||
tdesc_create_reg (feature, "spefscr", 74, 1, NULL, 32, "int");
|
||||
|
||||
feature = tdesc_create_feature (result, "org.gnu.gdb.power.linux");
|
||||
tdesc_create_reg (feature, "orig_r3", 71, 1, NULL, 32, "int");
|
||||
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
|
||||
|
||||
tdesc_powerpc_e500l = result;
|
||||
}
|
14
gdb/features/rs6000/powerpc-e500l.xml
Normal file
14
gdb/features/rs6000/powerpc-e500l.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. -->
|
||||
|
||||
<!DOCTYPE target SYSTEM "gdb-target.dtd">
|
||||
<target>
|
||||
<architecture>powerpc:e500</architecture>
|
||||
<xi:include href="power-core.xml"/>
|
||||
<xi:include href="power-spe.xml"/>
|
||||
<xi:include href="power-linux.xml"/>
|
||||
</target>
|
@ -1,3 +1,46 @@
|
||||
2008-05-03 Ulrich Weigand <uweigand@de.ibm.com>
|
||||
|
||||
* configure.srv (powerpc*-*-linux*): Set srv_regobj to
|
||||
powerpc-32l.o, powerpc-altivec32l.o, powerpc-e500l.o,
|
||||
powerpc-64l.o, and powerpc-altivec64l.o.
|
||||
Remove rs6000/powerpc-32.xml, rs6000/powerpc-64.xml, and
|
||||
rs6000/powerpc-e500.xml; add rs6000/powerpc-32l.xml,
|
||||
rs6000/powerpc-altivec32l.xml, rs6000/powerpc-e500l.xml,
|
||||
rs6000/powerpc-64l.xml, rs6000/powerpc-altivec64l.xml,
|
||||
rs6000/power-linux.xml, and rs6000/power64-linux.xml
|
||||
to srv_xmlfiles.
|
||||
|
||||
* Makefile.in (reg-ppc.o, reg-ppc.c): Remove, replace by ...
|
||||
(powerpc-32l.o, powerpc-32l.c): ... these new rules.
|
||||
(powerpc-32.o, powerpc-32.c): Remove, replace by ...
|
||||
(powerpc-altivec32l.o, powerpc-altivec32l.c): ... these new rules.
|
||||
(powerpc-e500.o, powerpc-e500.c): Remove, replace by ...
|
||||
(powerpc-e500l.o, powerpc-e500l.c): ... these new rules.
|
||||
(reg-ppc64.o, reg-ppc64.c): Remove, replace by ...
|
||||
(powerpc-64l.o, powerpc-64l.c): ... these new rules.
|
||||
(powerpc-64.o, powerpc-64.c): Remove, replace by ...
|
||||
(powerpc-altivec64l.o, powerpc-altivec64l.c): ... these new rules.
|
||||
(clean): Update.
|
||||
|
||||
* linux-ppc-low.c (init_registers_ppc): Remove, replace by ...
|
||||
(init_registers_powerpc_32l): ... this new prototype.
|
||||
(init_registers_powerpc_32): Remove, replace by ...
|
||||
(init_registers_powerpc_altivec32l): ... this new prototype.
|
||||
(init_registers_powerpc_e500): Remove, replace by ...
|
||||
(init_registers_powerpc_e500l): ... this new prototype.
|
||||
(init_registers_ppc64): Remove, replace by ...
|
||||
(init_registers_powerpc_64l): ... this new prototype.
|
||||
(init_registers_powerpc_64): Remove, replace by ...
|
||||
(init_registers_powerpc_altivec64l): ... this new prototype.
|
||||
(ppc_num_regs): Set to 73.
|
||||
(PT_ORIG_R3, PT_TRAP): Define if necessary.
|
||||
(ppc_regmap, ppc_regmap_e500): Add values for orig_r3 and trap.
|
||||
(ppc_cannot_store_register): Handle orig_r3 and trap.
|
||||
(ppc_arch_setup): Update init_registers_... calls.
|
||||
(ppc_fill_gregset): Handle orig_r3 and trap.
|
||||
|
||||
* inferiors.c (clear_inferiors): Reset current_inferior.
|
||||
|
||||
2008-04-23 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
* acinclude.m4: Add override.m4.
|
||||
|
@ -219,10 +219,11 @@ clean:
|
||||
rm -f version.c
|
||||
rm -f gdbserver$(EXEEXT) gdbreplay$(EXEEXT) core make.log
|
||||
rm -f reg-arm.c reg-i386.c reg-ia64.c reg-m32r.c reg-m68k.c
|
||||
rm -f reg-ppc.c reg-sh.c reg-spu.c reg-x86-64.c reg-i386-linux.c
|
||||
rm -f reg-sh.c reg-spu.c reg-x86-64.c reg-i386-linux.c
|
||||
rm -f reg-cris.c reg-crisv32.c reg-x86-64-linux.c reg-xtensa.c
|
||||
rm -f arm-with-iwmmxt.c mips-linux.c mips64-linux.c
|
||||
rm -f powerpc-32.c powerpc-64.c powerpc-e500.c
|
||||
rm -f powerpc-32l.c powerpc-64l.c powerpc-e500l.c
|
||||
rm -f powerpc-altivec32l.c powerpc-altivec64l.c
|
||||
rm -f xml-builtin.c stamp-xml
|
||||
|
||||
maintainer-clean realclean distclean: clean
|
||||
@ -360,21 +361,21 @@ mips-linux.c : $(srcdir)/../regformats/mips-linux.dat $(regdat_sh)
|
||||
mips64-linux.o : mips64-linux.c $(regdef_h)
|
||||
mips64-linux.c : $(srcdir)/../regformats/mips64-linux.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/mips64-linux.dat mips64-linux.c
|
||||
reg-ppc.o : reg-ppc.c $(regdef_h)
|
||||
reg-ppc.c : $(srcdir)/../regformats/reg-ppc.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-ppc.dat reg-ppc.c
|
||||
reg-ppc64.o : reg-ppc64.c $(regdef_h)
|
||||
reg-ppc64.c : $(srcdir)/../regformats/reg-ppc64.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-ppc64.dat reg-ppc64.c
|
||||
powerpc-32.o : powerpc-32.c $(regdef_h)
|
||||
powerpc-32.c : $(srcdir)/../regformats/rs6000/powerpc-32.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-32.dat powerpc-32.c
|
||||
powerpc-e500.o : powerpc-e500.c $(regdef_h)
|
||||
powerpc-e500.c : $(srcdir)/../regformats/rs6000/powerpc-e500.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-e500.dat powerpc-e500.c
|
||||
powerpc-64.o : powerpc-64.c $(regdef_h)
|
||||
powerpc-64.c : $(srcdir)/../regformats/rs6000/powerpc-64.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-64.dat powerpc-64.c
|
||||
powerpc-32l.o : powerpc-32l.c $(regdef_h)
|
||||
powerpc-32l.c : $(srcdir)/../regformats/rs6000/powerpc-32l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-32l.dat powerpc-32l.c
|
||||
powerpc-altivec32l.o : powerpc-altivec32l.c $(regdef_h)
|
||||
powerpc-altivec32l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec32l.dat powerpc-altivec32l.c
|
||||
powerpc-e500l.o : powerpc-e500l.c $(regdef_h)
|
||||
powerpc-e500l.c : $(srcdir)/../regformats/rs6000/powerpc-e500l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-e500l.dat powerpc-e500l.c
|
||||
powerpc-64l.o : powerpc-64l.c $(regdef_h)
|
||||
powerpc-64l.c : $(srcdir)/../regformats/rs6000/powerpc-64l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-64l.dat powerpc-64l.c
|
||||
powerpc-altivec64l.o : powerpc-altivec64l.c $(regdef_h)
|
||||
powerpc-altivec64l.c : $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/rs6000/powerpc-altivec64l.dat powerpc-altivec64l.c
|
||||
reg-s390.o : reg-s390.c $(regdef_h)
|
||||
reg-s390.c : $(srcdir)/../regformats/reg-s390.dat $(regdat_sh)
|
||||
$(SHELL) $(regdat_sh) $(srcdir)/../regformats/reg-s390.dat reg-s390.c
|
||||
|
@ -106,17 +106,24 @@ case "${target}" in
|
||||
srv_linux_usrregs=yes
|
||||
srv_linux_thread_db=yes
|
||||
;;
|
||||
powerpc*-*-linux*) srv_regobj="reg-ppc.o powerpc-32.o powerpc-e500.o"
|
||||
srv_regobj="${srv_regobj} reg-ppc64.o powerpc-64.o"
|
||||
powerpc*-*-linux*) srv_regobj="powerpc-32l.o"
|
||||
srv_regobj="${srv_regobj} powerpc-altivec32l.o"
|
||||
srv_regobj="${srv_regobj} powerpc-e500l.o"
|
||||
srv_regobj="${srv_regobj} powerpc-64l.o"
|
||||
srv_regobj="${srv_regobj} powerpc-altivec64l.o"
|
||||
srv_tgtobj="linux-low.o linux-ppc-low.o"
|
||||
srv_xmlfiles="rs6000/powerpc-32.xml"
|
||||
srv_xmlfiles="rs6000/powerpc-32l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec32l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-altivec.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-core.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-linux.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-fpu.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-e500l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power-spe.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-64l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/powerpc-altivec64l.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power64-core.xml"
|
||||
srv_xmlfiles="${srv_xmlfiles} rs6000/power64-linux.xml"
|
||||
srv_linux_usrregs=yes
|
||||
srv_linux_regsets=yes
|
||||
srv_linux_thread_db=yes
|
||||
|
@ -302,6 +302,8 @@ clear_inferiors (void)
|
||||
|
||||
clear_list (&all_threads);
|
||||
clear_list (&all_dlls);
|
||||
|
||||
current_inferior = NULL;
|
||||
}
|
||||
|
||||
/* Two utility functions for a truly degenerate inferior_list: a simple
|
||||
|
@ -31,18 +31,26 @@
|
||||
static unsigned long ppc_hwcap;
|
||||
|
||||
|
||||
/* Defined in auto-generated file reg-ppc.c. */
|
||||
void init_registers_ppc (void);
|
||||
/* Defined in auto-generated file powerpc-32.c. */
|
||||
void init_registers_powerpc_32 (void);
|
||||
/* Defined in auto-generated file powerpc-e500.c. */
|
||||
void init_registers_powerpc_e500 (void);
|
||||
/* Defined in auto-generated file reg-ppc64.c. */
|
||||
void init_registers_ppc64 (void);
|
||||
/* Defined in auto-generated file powerpc-64.c. */
|
||||
void init_registers_powerpc_64 (void);
|
||||
/* Defined in auto-generated file powerpc-32l.c. */
|
||||
void init_registers_powerpc_32l (void);
|
||||
/* Defined in auto-generated file powerpc-altivec32l.c. */
|
||||
void init_registers_powerpc_altivec32l (void);
|
||||
/* Defined in auto-generated file powerpc-e500l.c. */
|
||||
void init_registers_powerpc_e500l (void);
|
||||
/* Defined in auto-generated file powerpc-64l.c. */
|
||||
void init_registers_powerpc_64l (void);
|
||||
/* Defined in auto-generated file powerpc-altivec64l.c. */
|
||||
void init_registers_powerpc_altivec64l (void);
|
||||
|
||||
#define ppc_num_regs 71
|
||||
#define ppc_num_regs 73
|
||||
|
||||
/* This sometimes isn't defined. */
|
||||
#ifndef PT_ORIG_R3
|
||||
#define PT_ORIG_R3 34
|
||||
#endif
|
||||
#ifndef PT_TRAP
|
||||
#define PT_TRAP 40
|
||||
#endif
|
||||
|
||||
#ifdef __powerpc64__
|
||||
/* We use a constant for FPSCR instead of PT_FPSCR, because
|
||||
@ -65,7 +73,8 @@ static int ppc_regmap[] =
|
||||
PT_FPR0*8+192, PT_FPR0*8+200, PT_FPR0*8+208, PT_FPR0*8+216,
|
||||
PT_FPR0*8+224, PT_FPR0*8+232, PT_FPR0*8+240, PT_FPR0*8+248,
|
||||
PT_NIP * 8, PT_MSR * 8, PT_CCR * 8, PT_LNK * 8,
|
||||
PT_CTR * 8, PT_XER * 8, PT_FPR0*8 + 256 };
|
||||
PT_CTR * 8, PT_XER * 8, PT_FPR0*8 + 256,
|
||||
PT_ORIG_R3 * 8, PT_TRAP * 8 };
|
||||
#else
|
||||
/* Currently, don't check/send MQ. */
|
||||
static int ppc_regmap[] =
|
||||
@ -86,7 +95,8 @@ static int ppc_regmap[] =
|
||||
PT_FPR0*4+192, PT_FPR0*4+200, PT_FPR0*4+208, PT_FPR0*4+216,
|
||||
PT_FPR0*4+224, PT_FPR0*4+232, PT_FPR0*4+240, PT_FPR0*4+248,
|
||||
PT_NIP * 4, PT_MSR * 4, PT_CCR * 4, PT_LNK * 4,
|
||||
PT_CTR * 4, PT_XER * 4, PT_FPSCR * 4
|
||||
PT_CTR * 4, PT_XER * 4, PT_FPSCR * 4,
|
||||
PT_ORIG_R3 * 4, PT_TRAP * 4
|
||||
};
|
||||
|
||||
static int ppc_regmap_e500[] =
|
||||
@ -107,7 +117,8 @@ static int ppc_regmap_e500[] =
|
||||
-1, -1, -1, -1,
|
||||
-1, -1, -1, -1,
|
||||
PT_NIP * 4, PT_MSR * 4, PT_CCR * 4, PT_LNK * 4,
|
||||
PT_CTR * 4, PT_XER * 4, -1
|
||||
PT_CTR * 4, PT_XER * 4, -1,
|
||||
PT_ORIG_R3 * 4, PT_TRAP * 4
|
||||
};
|
||||
#endif
|
||||
|
||||
@ -120,6 +131,11 @@ ppc_cannot_store_register (int regno)
|
||||
return 2;
|
||||
#endif
|
||||
|
||||
/* Some kernels do not allow us to store orig_r3 or trap. */
|
||||
if (regno == find_regno ("orig_r3")
|
||||
|| regno == find_regno ("trap"))
|
||||
return 2;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -226,7 +242,7 @@ ppc_arch_setup (void)
|
||||
/* On a 64-bit host, assume 64-bit inferior process with no
|
||||
AltiVec registers. Reset ppc_hwcap to ensure that the
|
||||
collect_register call below does not fail. */
|
||||
init_registers_ppc64 ();
|
||||
init_registers_powerpc_64l ();
|
||||
ppc_hwcap = 0;
|
||||
|
||||
/* Only if the high bit of the MSR is set, we actually have
|
||||
@ -236,18 +252,18 @@ ppc_arch_setup (void)
|
||||
{
|
||||
ppc_get_hwcap (&ppc_hwcap);
|
||||
if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC)
|
||||
init_registers_powerpc_64 ();
|
||||
init_registers_powerpc_altivec64l ();
|
||||
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* OK, we have a 32-bit inferior. */
|
||||
init_registers_ppc ();
|
||||
init_registers_powerpc_32l ();
|
||||
|
||||
ppc_get_hwcap (&ppc_hwcap);
|
||||
if (ppc_hwcap & PPC_FEATURE_HAS_ALTIVEC)
|
||||
init_registers_powerpc_32 ();
|
||||
init_registers_powerpc_altivec32l ();
|
||||
|
||||
/* On 32-bit machines, check for SPE registers.
|
||||
Set the low target's regmap field as appropriately. */
|
||||
@ -255,7 +271,7 @@ ppc_arch_setup (void)
|
||||
the_low_target.regmap = ppc_regmap;
|
||||
if (ppc_hwcap & PPC_FEATURE_HAS_SPE)
|
||||
{
|
||||
init_registers_powerpc_e500 ();
|
||||
init_registers_powerpc_e500l ();
|
||||
the_low_target.regmap = ppc_regmap_e500;
|
||||
}
|
||||
#endif
|
||||
@ -292,6 +308,9 @@ static void ppc_fill_gregset (void *buf)
|
||||
|
||||
for (i = 64; i < 70; i++)
|
||||
ppc_collect_ptrace_register (i, (char *) buf + ppc_regmap[i]);
|
||||
|
||||
for (i = 71; i < 73; i++)
|
||||
ppc_collect_ptrace_register (i, (char *) buf + ppc_regmap[i]);
|
||||
}
|
||||
|
||||
#ifndef PTRACE_GETVRREGS
|
||||
|
@ -42,6 +42,15 @@
|
||||
/* Prototypes for supply_gregset etc. */
|
||||
#include "gregset.h"
|
||||
#include "ppc-tdep.h"
|
||||
#include "ppc-linux-tdep.h"
|
||||
|
||||
/* This sometimes isn't defined. */
|
||||
#ifndef PT_ORIG_R3
|
||||
#define PT_ORIG_R3 34
|
||||
#endif
|
||||
#ifndef PT_TRAP
|
||||
#define PT_TRAP 40
|
||||
#endif
|
||||
|
||||
/* Glibc's headers don't define PTRACE_GETVRREGS so we cannot use a
|
||||
configure time check. Some older glibc's (for instance 2.2.1)
|
||||
@ -200,6 +209,10 @@ ppc_register_u_addr (struct gdbarch *gdbarch, int regno)
|
||||
#endif
|
||||
if (regno == tdep->ppc_ps_regnum)
|
||||
u_addr = PT_MSR * wordsize;
|
||||
if (regno == PPC_ORIG_R3_REGNUM)
|
||||
u_addr = PT_ORIG_R3 * wordsize;
|
||||
if (regno == PPC_TRAP_REGNUM)
|
||||
u_addr = PT_TRAP * wordsize;
|
||||
if (tdep->ppc_fpscr_regnum >= 0
|
||||
&& regno == tdep->ppc_fpscr_regnum)
|
||||
{
|
||||
@ -476,6 +489,11 @@ fetch_ppc_registers (struct regcache *regcache, int tid)
|
||||
fetch_register (regcache, tid, tdep->ppc_xer_regnum);
|
||||
if (tdep->ppc_mq_regnum != -1)
|
||||
fetch_register (regcache, tid, tdep->ppc_mq_regnum);
|
||||
if (ppc_linux_trap_reg_p (gdbarch))
|
||||
{
|
||||
fetch_register (regcache, tid, PPC_ORIG_R3_REGNUM);
|
||||
fetch_register (regcache, tid, PPC_TRAP_REGNUM);
|
||||
}
|
||||
if (tdep->ppc_fpscr_regnum != -1)
|
||||
fetch_register (regcache, tid, tdep->ppc_fpscr_regnum);
|
||||
if (have_ptrace_getvrregs)
|
||||
@ -676,9 +694,12 @@ store_register (const struct regcache *regcache, int tid, int regno)
|
||||
regaddr += sizeof (long);
|
||||
|
||||
if (errno == EIO
|
||||
&& regno == tdep->ppc_fpscr_regnum)
|
||||
&& (regno == tdep->ppc_fpscr_regnum
|
||||
|| regno == PPC_ORIG_R3_REGNUM
|
||||
|| regno == PPC_TRAP_REGNUM))
|
||||
{
|
||||
/* Some older kernel versions don't allow fpscr to be written. */
|
||||
/* Some older kernel versions don't allow fpscr, orig_r3
|
||||
or trap to be written. */
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -765,6 +786,11 @@ store_ppc_registers (const struct regcache *regcache, int tid)
|
||||
store_register (regcache, tid, tdep->ppc_mq_regnum);
|
||||
if (tdep->ppc_fpscr_regnum != -1)
|
||||
store_register (regcache, tid, tdep->ppc_fpscr_regnum);
|
||||
if (ppc_linux_trap_reg_p (gdbarch))
|
||||
{
|
||||
store_register (regcache, tid, PPC_ORIG_R3_REGNUM);
|
||||
store_register (regcache, tid, PPC_TRAP_REGNUM);
|
||||
}
|
||||
if (have_ptrace_getvrregs)
|
||||
if (tdep->ppc_vr0_regnum != -1 && tdep->ppc_vrsave_regnum != -1)
|
||||
store_altivec_registers (regcache, tid);
|
||||
@ -962,28 +988,51 @@ fill_fpregset (const struct regcache *regcache,
|
||||
static const struct target_desc *
|
||||
ppc_linux_read_description (struct target_ops *ops)
|
||||
{
|
||||
int altivec = 0;
|
||||
|
||||
int tid = TIDGET (inferior_ptid);
|
||||
if (tid == 0)
|
||||
tid = PIDGET (inferior_ptid);
|
||||
|
||||
if (have_ptrace_getsetevrregs)
|
||||
{
|
||||
struct gdb_evrregset_t evrregset;
|
||||
int tid = TIDGET (inferior_ptid);
|
||||
|
||||
if (tid == 0)
|
||||
tid = PIDGET (inferior_ptid);
|
||||
|
||||
if (ptrace (PTRACE_GETEVRREGS, tid, 0, &evrregset) >= 0)
|
||||
return tdesc_powerpc_e500;
|
||||
else
|
||||
{
|
||||
/* EIO means that the PTRACE_GETEVRREGS request isn't supported. */
|
||||
if (errno == EIO)
|
||||
return NULL;
|
||||
else
|
||||
/* Anything else needs to be reported. */
|
||||
perror_with_name (_("Unable to fetch SPE registers"));
|
||||
}
|
||||
return tdesc_powerpc_e500l;
|
||||
|
||||
/* EIO means that the PTRACE_GETEVRREGS request isn't supported.
|
||||
Anything else needs to be reported. */
|
||||
else if (errno != EIO)
|
||||
perror_with_name (_("Unable to fetch SPE registers"));
|
||||
}
|
||||
|
||||
return NULL;
|
||||
if (have_ptrace_getvrregs)
|
||||
{
|
||||
gdb_vrregset_t vrregset;
|
||||
|
||||
if (ptrace (PTRACE_GETVRREGS, tid, 0, &vrregset) >= 0)
|
||||
altivec = 1;
|
||||
|
||||
/* EIO means that the PTRACE_GETVRREGS request isn't supported.
|
||||
Anything else needs to be reported. */
|
||||
else if (errno != EIO)
|
||||
perror_with_name (_("Unable to fetch AltiVec registers"));
|
||||
}
|
||||
|
||||
/* Check for 64-bit inferior process. This is the case when the host is
|
||||
64-bit, and in addition the top bit of the MSR register is set. */
|
||||
#ifdef __powerpc64__
|
||||
{
|
||||
long msr;
|
||||
errno = 0;
|
||||
msr = (long) ptrace (PTRACE_PEEKUSER, tid, PT_MSR * 8, 0);
|
||||
if (errno == 0 && msr < 0)
|
||||
return altivec? tdesc_powerpc_altivec64l : tdesc_powerpc_64l;
|
||||
}
|
||||
#endif
|
||||
|
||||
return altivec? tdesc_powerpc_altivec32l : tdesc_powerpc_32l;
|
||||
}
|
||||
|
||||
void _initialize_ppc_linux_nat (void);
|
||||
|
@ -34,10 +34,17 @@
|
||||
#include "regset.h"
|
||||
#include "solib-svr4.h"
|
||||
#include "ppc-tdep.h"
|
||||
#include "ppc-linux-tdep.h"
|
||||
#include "trad-frame.h"
|
||||
#include "frame-unwind.h"
|
||||
#include "tramp-frame.h"
|
||||
|
||||
#include "features/rs6000/powerpc-32l.c"
|
||||
#include "features/rs6000/powerpc-altivec32l.c"
|
||||
#include "features/rs6000/powerpc-64l.c"
|
||||
#include "features/rs6000/powerpc-altivec64l.c"
|
||||
#include "features/rs6000/powerpc-e500l.c"
|
||||
|
||||
static CORE_ADDR
|
||||
ppc_linux_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
|
||||
{
|
||||
@ -620,17 +627,60 @@ ppc_linux_convert_from_func_ptr_addr (struct gdbarch *gdbarch,
|
||||
return addr;
|
||||
}
|
||||
|
||||
/* This wrapper clears areas in the linux gregset not written by
|
||||
ppc_collect_gregset. */
|
||||
/* Wrappers to handle Linux-only registers. */
|
||||
|
||||
static void
|
||||
ppc_linux_supply_gregset (const struct regset *regset,
|
||||
struct regcache *regcache,
|
||||
int regnum, const void *gregs, size_t len)
|
||||
{
|
||||
const struct ppc_reg_offsets *offsets = regset->descr;
|
||||
|
||||
ppc_supply_gregset (regset, regcache, regnum, gregs, len);
|
||||
|
||||
if (ppc_linux_trap_reg_p (get_regcache_arch (regcache)))
|
||||
{
|
||||
/* "orig_r3" is stored 2 slots after "pc". */
|
||||
if (regnum == -1 || regnum == PPC_ORIG_R3_REGNUM)
|
||||
ppc_supply_reg (regcache, PPC_ORIG_R3_REGNUM, gregs,
|
||||
offsets->pc_offset + 2 * offsets->gpr_size,
|
||||
offsets->gpr_size);
|
||||
|
||||
/* "trap" is stored 8 slots after "pc". */
|
||||
if (regnum == -1 || regnum == PPC_TRAP_REGNUM)
|
||||
ppc_supply_reg (regcache, PPC_TRAP_REGNUM, gregs,
|
||||
offsets->pc_offset + 8 * offsets->gpr_size,
|
||||
offsets->gpr_size);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ppc_linux_collect_gregset (const struct regset *regset,
|
||||
const struct regcache *regcache,
|
||||
int regnum, void *gregs, size_t len)
|
||||
{
|
||||
const struct ppc_reg_offsets *offsets = regset->descr;
|
||||
|
||||
/* Clear areas in the linux gregset not written elsewhere. */
|
||||
if (regnum == -1)
|
||||
memset (gregs, 0, len);
|
||||
|
||||
ppc_collect_gregset (regset, regcache, regnum, gregs, len);
|
||||
|
||||
if (ppc_linux_trap_reg_p (get_regcache_arch (regcache)))
|
||||
{
|
||||
/* "orig_r3" is stored 2 slots after "pc". */
|
||||
if (regnum == -1 || regnum == PPC_ORIG_R3_REGNUM)
|
||||
ppc_collect_reg (regcache, PPC_ORIG_R3_REGNUM, gregs,
|
||||
offsets->pc_offset + 2 * offsets->gpr_size,
|
||||
offsets->gpr_size);
|
||||
|
||||
/* "trap" is stored 8 slots after "pc". */
|
||||
if (regnum == -1 || regnum == PPC_TRAP_REGNUM)
|
||||
ppc_collect_reg (regcache, PPC_TRAP_REGNUM, gregs,
|
||||
offsets->pc_offset + 8 * offsets->gpr_size,
|
||||
offsets->gpr_size);
|
||||
}
|
||||
}
|
||||
|
||||
/* Regset descriptions. */
|
||||
@ -686,14 +736,14 @@ static const struct ppc_reg_offsets ppc64_linux_reg_offsets =
|
||||
|
||||
static const struct regset ppc32_linux_gregset = {
|
||||
&ppc32_linux_reg_offsets,
|
||||
ppc_supply_gregset,
|
||||
ppc_linux_supply_gregset,
|
||||
ppc_linux_collect_gregset,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const struct regset ppc64_linux_gregset = {
|
||||
&ppc64_linux_reg_offsets,
|
||||
ppc_supply_gregset,
|
||||
ppc_linux_supply_gregset,
|
||||
ppc_linux_collect_gregset,
|
||||
NULL
|
||||
};
|
||||
@ -789,6 +839,14 @@ ppc_linux_sigtramp_cache (struct frame_info *this_frame,
|
||||
trad_frame_set_reg_addr (this_cache, tdep->ppc_cr_regnum,
|
||||
gpregs + 38 * tdep->wordsize);
|
||||
|
||||
if (ppc_linux_trap_reg_p (gdbarch))
|
||||
{
|
||||
trad_frame_set_reg_addr (this_cache, PPC_ORIG_R3_REGNUM,
|
||||
gpregs + 34 * tdep->wordsize);
|
||||
trad_frame_set_reg_addr (this_cache, PPC_TRAP_REGNUM,
|
||||
gpregs + 40 * tdep->wordsize);
|
||||
}
|
||||
|
||||
if (ppc_floating_point_unit_p (gdbarch))
|
||||
{
|
||||
/* Floating point registers. */
|
||||
@ -895,11 +953,69 @@ static struct tramp_frame ppc64_linux_sighandler_tramp_frame = {
|
||||
ppc64_linux_sighandler_cache_init
|
||||
};
|
||||
|
||||
|
||||
/* Return 1 if PPC_ORIG_R3_REGNUM and PPC_TRAP_REGNUM are usable. */
|
||||
int
|
||||
ppc_linux_trap_reg_p (struct gdbarch *gdbarch)
|
||||
{
|
||||
/* If we do not have a target description with registers, then
|
||||
the special registers will not be included in the register set. */
|
||||
if (!tdesc_has_registers (gdbarch_target_desc (gdbarch)))
|
||||
return 0;
|
||||
|
||||
/* If we do, then it is safe to check the size. */
|
||||
return register_size (gdbarch, PPC_ORIG_R3_REGNUM) > 0
|
||||
&& register_size (gdbarch, PPC_TRAP_REGNUM) > 0;
|
||||
}
|
||||
|
||||
static void
|
||||
ppc_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
|
||||
{
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
|
||||
regcache_cooked_write_unsigned (regcache, gdbarch_pc_regnum (gdbarch), pc);
|
||||
|
||||
/* Set special TRAP register to -1 to prevent the kernel from
|
||||
messing with the PC we just installed, if we happen to be
|
||||
within an interrupted system call that the kernel wants to
|
||||
restart.
|
||||
|
||||
Note that after we return from the dummy call, the TRAP and
|
||||
ORIG_R3 registers will be automatically restored, and the
|
||||
kernel continues to restart the system call at this point. */
|
||||
if (ppc_linux_trap_reg_p (gdbarch))
|
||||
regcache_cooked_write_unsigned (regcache, PPC_TRAP_REGNUM, -1);
|
||||
}
|
||||
|
||||
static const struct target_desc *
|
||||
ppc_linux_core_read_description (struct gdbarch *gdbarch,
|
||||
struct target_ops *target,
|
||||
bfd *abfd)
|
||||
{
|
||||
asection *altivec = bfd_get_section_by_name (abfd, ".reg-ppc-vmx");
|
||||
asection *section = bfd_get_section_by_name (abfd, ".reg");
|
||||
if (! section)
|
||||
return NULL;
|
||||
|
||||
switch (bfd_section_size (abfd, section))
|
||||
{
|
||||
case 48 * 4:
|
||||
return altivec? tdesc_powerpc_altivec32l : tdesc_powerpc_32l;
|
||||
|
||||
case 48 * 8:
|
||||
return altivec? tdesc_powerpc_altivec64l : tdesc_powerpc_64l;
|
||||
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ppc_linux_init_abi (struct gdbarch_info info,
|
||||
struct gdbarch *gdbarch)
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
struct tdesc_arch_data *tdesc_data = (void *) info.tdep_info;
|
||||
|
||||
/* PPC GNU/Linux uses either 64-bit or 128-bit long doubles; where
|
||||
128-bit, they are IBM long double, not IEEE quad long double as
|
||||
@ -914,6 +1030,9 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
||||
set_gdbarch_convert_from_func_ptr_addr
|
||||
(gdbarch, ppc_linux_convert_from_func_ptr_addr);
|
||||
|
||||
/* Handle inferior calls during interrupted system calls. */
|
||||
set_gdbarch_write_pc (gdbarch, ppc_linux_write_pc);
|
||||
|
||||
if (tdep->wordsize == 4)
|
||||
{
|
||||
/* Until November 2001, gcc did not comply with the 32 bit SysV
|
||||
@ -951,10 +1070,33 @@ ppc_linux_init_abi (struct gdbarch_info info,
|
||||
tramp_frame_prepend_unwinder (gdbarch, &ppc64_linux_sighandler_tramp_frame);
|
||||
}
|
||||
set_gdbarch_regset_from_core_section (gdbarch, ppc_linux_regset_from_core_section);
|
||||
set_gdbarch_core_read_description (gdbarch, ppc_linux_core_read_description);
|
||||
|
||||
/* Enable TLS support. */
|
||||
set_gdbarch_fetch_tls_load_module_address (gdbarch,
|
||||
svr4_fetch_objfile_link_map);
|
||||
|
||||
if (tdesc_data)
|
||||
{
|
||||
const struct tdesc_feature *feature;
|
||||
|
||||
/* If we have target-described registers, then we can safely
|
||||
reserve a number for PPC_ORIG_R3_REGNUM and PPC_TRAP_REGNUM
|
||||
(whether they are described or not). */
|
||||
gdb_assert (gdbarch_num_regs (gdbarch) <= PPC_ORIG_R3_REGNUM);
|
||||
set_gdbarch_num_regs (gdbarch, PPC_TRAP_REGNUM + 1);
|
||||
|
||||
/* If they are present, then assign them to the reserved number. */
|
||||
feature = tdesc_find_feature (info.target_desc,
|
||||
"org.gnu.gdb.power.linux");
|
||||
if (feature != NULL)
|
||||
{
|
||||
tdesc_numbered_register (feature, tdesc_data,
|
||||
PPC_ORIG_R3_REGNUM, "orig_r3");
|
||||
tdesc_numbered_register (feature, tdesc_data,
|
||||
PPC_TRAP_REGNUM, "trap");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -968,4 +1110,11 @@ _initialize_ppc_linux_tdep (void)
|
||||
ppc_linux_init_abi);
|
||||
gdbarch_register_osabi (bfd_arch_rs6000, bfd_mach_rs6k, GDB_OSABI_LINUX,
|
||||
ppc_linux_init_abi);
|
||||
|
||||
/* Initialize the Linux target descriptions. */
|
||||
initialize_tdesc_powerpc_32l ();
|
||||
initialize_tdesc_powerpc_altivec32l ();
|
||||
initialize_tdesc_powerpc_64l ();
|
||||
initialize_tdesc_powerpc_altivec64l ();
|
||||
initialize_tdesc_powerpc_e500l ();
|
||||
}
|
||||
|
48
gdb/ppc-linux-tdep.h
Normal file
48
gdb/ppc-linux-tdep.h
Normal file
@ -0,0 +1,48 @@
|
||||
/* Target-dependent code for GDB, the GNU debugger.
|
||||
|
||||
Copyright (C) 2008 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GDB.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
#ifndef PPC_LINUX_TDEP_H
|
||||
#define PPC_LINUX_TDEP_H
|
||||
|
||||
struct regset;
|
||||
|
||||
/* From ppc-linux-tdep.c ... */
|
||||
const struct regset *ppc_linux_gregset (int);
|
||||
const struct regset *ppc_linux_fpregset (void);
|
||||
|
||||
/* Extra register number constants. The Linux kernel stores a
|
||||
"trap" code and the original value of r3 into special "registers";
|
||||
these need to be saved and restored when performing an inferior
|
||||
call while the inferior was interrupted within a system call. */
|
||||
enum {
|
||||
PPC_ORIG_R3_REGNUM = PPC_NUM_REGS,
|
||||
PPC_TRAP_REGNUM,
|
||||
};
|
||||
|
||||
/* Return 1 if PPC_ORIG_R3_REGNUM and PPC_TRAP_REGNUM are usable. */
|
||||
int ppc_linux_trap_reg_p (struct gdbarch *gdbarch);
|
||||
|
||||
/* Linux target descriptions. */
|
||||
extern struct target_desc *tdesc_powerpc_32l;
|
||||
extern struct target_desc *tdesc_powerpc_altivec32l;
|
||||
extern struct target_desc *tdesc_powerpc_e500l;
|
||||
extern struct target_desc *tdesc_powerpc_64l;
|
||||
extern struct target_desc *tdesc_powerpc_altivec64l;
|
||||
|
||||
#endif /* PPC_LINUX_TDEP_H */
|
@ -27,7 +27,7 @@ struct value;
|
||||
struct regcache;
|
||||
struct type;
|
||||
|
||||
/* From ppc-linux-tdep.c... */
|
||||
/* From ppc-sysv-tdep.c ... */
|
||||
enum return_value_convention ppc_sysv_abi_return_value (struct gdbarch *gdbarch,
|
||||
struct type *func_type,
|
||||
struct type *valtype,
|
||||
@ -56,10 +56,6 @@ CORE_ADDR ppc64_sysv_abi_push_dummy_call (struct gdbarch *gdbarch,
|
||||
CORE_ADDR struct_addr);
|
||||
CORE_ADDR ppc64_sysv_abi_adjust_breakpoint_address (struct gdbarch *gdbarch,
|
||||
CORE_ADDR bpaddr);
|
||||
int ppc_linux_memory_remove_breakpoint (struct gdbarch *, struct bp_target_info *);
|
||||
struct link_map_offsets *ppc_linux_svr4_fetch_link_map_offsets (void);
|
||||
const struct regset *ppc_linux_gregset (int);
|
||||
const struct regset *ppc_linux_fpregset (void);
|
||||
|
||||
enum return_value_convention ppc64_sysv_abi_return_value (struct gdbarch *gdbarch,
|
||||
struct type *func_type,
|
||||
@ -107,6 +103,12 @@ struct ppc_reg_offsets
|
||||
int vrsave_offset;
|
||||
};
|
||||
|
||||
extern void ppc_supply_reg (struct regcache *regcache, int regnum,
|
||||
const gdb_byte *regs, size_t offset, int regsize);
|
||||
|
||||
extern void ppc_collect_reg (const struct regcache *regcache, int regnum,
|
||||
gdb_byte *regs, size_t offset, int regsize);
|
||||
|
||||
/* Supply register REGNUM in the general-purpose register set REGSET
|
||||
from the buffer specified by GREGS and LEN to register cache
|
||||
REGCACHE. If REGNUM is -1, do this for all registers in REGSET. */
|
||||
@ -268,6 +270,4 @@ enum {
|
||||
/* Estimate for the maximum number of instrctions in a function epilogue. */
|
||||
#define PPC_MAX_EPILOGUE_INSTRUCTIONS 52
|
||||
|
||||
extern struct target_desc *tdesc_powerpc_e500;
|
||||
|
||||
#endif /* ppc-tdep.h */
|
||||
|
@ -1,4 +1,6 @@
|
||||
name:ppc
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-32l.xml
|
||||
name:powerpc_32l
|
||||
xmltarget:powerpc-32l.xml
|
||||
expedite:r1,pc
|
||||
32:r0
|
||||
32:r1
|
||||
@ -32,7 +34,6 @@ expedite:r1,pc
|
||||
32:r29
|
||||
32:r30
|
||||
32:r31
|
||||
|
||||
64:f0
|
||||
64:f1
|
||||
64:f2
|
||||
@ -65,12 +66,12 @@ expedite:r1,pc
|
||||
64:f29
|
||||
64:f30
|
||||
64:f31
|
||||
|
||||
32:pc
|
||||
32:msr
|
||||
|
||||
32:cr
|
||||
32:lr
|
||||
32:ctr
|
||||
32:xer
|
||||
32:fpscr
|
||||
32:orig_r3
|
||||
32:trap
|
@ -1,4 +1,6 @@
|
||||
name:ppc64
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-64l.xml
|
||||
name:powerpc_64l
|
||||
xmltarget:powerpc-64l.xml
|
||||
expedite:r1,pc
|
||||
64:r0
|
||||
64:r1
|
||||
@ -32,7 +34,6 @@ expedite:r1,pc
|
||||
64:r29
|
||||
64:r30
|
||||
64:r31
|
||||
|
||||
64:f0
|
||||
64:f1
|
||||
64:f2
|
||||
@ -65,12 +66,12 @@ expedite:r1,pc
|
||||
64:f29
|
||||
64:f30
|
||||
64:f31
|
||||
|
||||
64:pc
|
||||
64:msr
|
||||
|
||||
32:cr
|
||||
64:lr
|
||||
64:ctr
|
||||
32:xer
|
||||
32:fpscr
|
||||
64:orig_r3
|
||||
64:trap
|
@ -1,6 +1,6 @@
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-32.xml
|
||||
name:powerpc_32
|
||||
xmltarget:powerpc-32.xml
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-altivec32l.xml
|
||||
name:powerpc_altivec32l
|
||||
xmltarget:powerpc-altivec32l.xml
|
||||
expedite:r1,pc
|
||||
32:r0
|
||||
32:r1
|
||||
@ -73,6 +73,8 @@ expedite:r1,pc
|
||||
32:ctr
|
||||
32:xer
|
||||
32:fpscr
|
||||
32:orig_r3
|
||||
32:trap
|
||||
128:vr0
|
||||
128:vr1
|
||||
128:vr2
|
@ -1,6 +1,6 @@
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-64.xml
|
||||
name:powerpc_64
|
||||
xmltarget:powerpc-64.xml
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-altivec64l.xml
|
||||
name:powerpc_altivec64l
|
||||
xmltarget:powerpc-altivec64l.xml
|
||||
expedite:r1,pc
|
||||
64:r0
|
||||
64:r1
|
||||
@ -73,6 +73,8 @@ expedite:r1,pc
|
||||
64:ctr
|
||||
32:xer
|
||||
32:fpscr
|
||||
64:orig_r3
|
||||
64:trap
|
||||
128:vr0
|
||||
128:vr1
|
||||
128:vr2
|
@ -1,6 +1,6 @@
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-e500.xml
|
||||
name:powerpc_e500
|
||||
xmltarget:powerpc-e500.xml
|
||||
# DO NOT EDIT: generated from rs6000/powerpc-e500l.xml
|
||||
name:powerpc_e500l
|
||||
xmltarget:powerpc-e500l.xml
|
||||
expedite:r1,pc
|
||||
32:r0
|
||||
32:r1
|
||||
@ -73,5 +73,7 @@ expedite:r1,pc
|
||||
32:ctr
|
||||
32:xer
|
||||
0:
|
||||
32:orig_r3
|
||||
32:trap
|
||||
64:acc
|
||||
32:spefscr
|
@ -64,6 +64,7 @@
|
||||
#include "rs6000-tdep.h"
|
||||
|
||||
#include "features/rs6000/powerpc-32.c"
|
||||
#include "features/rs6000/powerpc-altivec32.c"
|
||||
#include "features/rs6000/powerpc-403.c"
|
||||
#include "features/rs6000/powerpc-403gc.c"
|
||||
#include "features/rs6000/powerpc-505.c"
|
||||
@ -72,6 +73,7 @@
|
||||
#include "features/rs6000/powerpc-603.c"
|
||||
#include "features/rs6000/powerpc-604.c"
|
||||
#include "features/rs6000/powerpc-64.c"
|
||||
#include "features/rs6000/powerpc-altivec64.c"
|
||||
#include "features/rs6000/powerpc-7400.c"
|
||||
#include "features/rs6000/powerpc-750.c"
|
||||
#include "features/rs6000/powerpc-860.c"
|
||||
@ -376,7 +378,7 @@ rs6000_register_sim_regno (struct gdbarch *gdbarch, int reg)
|
||||
/* REGS + OFFSET contains register REGNUM in a field REGSIZE wide.
|
||||
Write the register to REGCACHE. */
|
||||
|
||||
static void
|
||||
void
|
||||
ppc_supply_reg (struct regcache *regcache, int regnum,
|
||||
const gdb_byte *regs, size_t offset, int regsize)
|
||||
{
|
||||
@ -397,7 +399,7 @@ ppc_supply_reg (struct regcache *regcache, int regnum,
|
||||
/* Read register REGNUM from REGCACHE and store to REGS + OFFSET
|
||||
in a field REGSIZE wide. Zero pad as necessary. */
|
||||
|
||||
static void
|
||||
void
|
||||
ppc_collect_reg (const struct regcache *regcache, int regnum,
|
||||
gdb_byte *regs, size_t offset, int regsize)
|
||||
{
|
||||
@ -2857,7 +2859,7 @@ struct variant
|
||||
static struct variant variants[] =
|
||||
{
|
||||
{"powerpc", "PowerPC user-level", bfd_arch_powerpc,
|
||||
bfd_mach_ppc, &tdesc_powerpc_32},
|
||||
bfd_mach_ppc, &tdesc_powerpc_altivec32},
|
||||
{"power", "POWER user-level", bfd_arch_rs6000,
|
||||
bfd_mach_rs6k, &tdesc_rs6000},
|
||||
{"403", "IBM PowerPC 403", bfd_arch_powerpc,
|
||||
@ -2885,7 +2887,7 @@ static struct variant variants[] =
|
||||
|
||||
/* 64-bit */
|
||||
{"powerpc64", "PowerPC 64-bit user-level", bfd_arch_powerpc,
|
||||
bfd_mach_ppc64, &tdesc_powerpc_64},
|
||||
bfd_mach_ppc64, &tdesc_powerpc_altivec64},
|
||||
{"620", "Motorola PowerPC 620", bfd_arch_powerpc,
|
||||
bfd_mach_ppc_620, &tdesc_powerpc_64},
|
||||
{"630", "Motorola PowerPC 630", bfd_arch_powerpc,
|
||||
@ -3902,6 +3904,7 @@ _initialize_rs6000_tdep (void)
|
||||
|
||||
/* Initialize the standard target descriptions. */
|
||||
initialize_tdesc_powerpc_32 ();
|
||||
initialize_tdesc_powerpc_altivec32 ();
|
||||
initialize_tdesc_powerpc_403 ();
|
||||
initialize_tdesc_powerpc_403gc ();
|
||||
initialize_tdesc_powerpc_505 ();
|
||||
@ -3910,6 +3913,7 @@ _initialize_rs6000_tdep (void)
|
||||
initialize_tdesc_powerpc_603 ();
|
||||
initialize_tdesc_powerpc_604 ();
|
||||
initialize_tdesc_powerpc_64 ();
|
||||
initialize_tdesc_powerpc_altivec64 ();
|
||||
initialize_tdesc_powerpc_7400 ();
|
||||
initialize_tdesc_powerpc_750 ();
|
||||
initialize_tdesc_powerpc_860 ();
|
||||
|
Loading…
Reference in New Issue
Block a user