mep.c (mep_handle_option): Leave IVC2 control registers as fixed.

* config/mep/mep.c (mep_handle_option): Leave IVC2 control
registers as fixed.
(mep_interrupt_saved_reg): Save appropriate IVC2 control
registers.
* config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
unspecified accesses to control registers.
* config/mep/intrinsics.md: Regenerate.
* config/mep/intrinsics.h: Regenerate.
* config/mep/mep-intrin.h: Regenerate.

From-SVN: r149164
This commit is contained in:
DJ Delorie 2009-07-01 22:16:32 -04:00 committed by DJ Delorie
parent 9df748c0ca
commit f2082f9028
6 changed files with 2372 additions and 10158 deletions

View File

@ -1,3 +1,15 @@
2009-07-01 DJ Delorie <dj@redhat.com>
* config/mep/mep.c (mep_handle_option): Leave IVC2 control
registers as fixed.
(mep_interrupt_saved_reg): Save appropriate IVC2 control
registers.
* config/mep/mep-ivc2.cpu: Add VOLATILE to insns that make
unspecified accesses to control registers.
* config/mep/intrinsics.md: Regenerate.
* config/mep/intrinsics.h: Regenerate.
* config/mep/mep-intrin.h: Regenerate.
2009-07-01 Anthony Green <green@moxielogic.com>
* config/moxie/moxie.c (moxie_expand_prologue): Use dec

View File

@ -20,66 +20,66 @@ typedef unsigned int cp_v2usi __attribute__((vector_size(8)));
// default
void mep_cpfmadila1_h (cp_v4hi, cp_v4hi, long, long);
void mep_cpfmadiua1_h (cp_v4hi, cp_v4hi, long, long);
void mep_cpfmadia1_b (cp_v8qi, cp_v8qi, long, long);
void mep_cpfmadia1u_b (cp_v8uqi, cp_v8uqi, long, long);
void mep_cpfmulila1_h (cp_v4hi, cp_v4hi, long, long);
void mep_cpfmuliua1_h (cp_v4hi, cp_v4hi, long, long);
void mep_cpfmulia1_b (cp_v8qi, cp_v8qi, long, long);
void mep_cpfmulia1u_b (cp_v8uqi, cp_v8uqi, long, long);
void mep_cpamadila1_h (cp_v4hi, cp_v4hi, long);
void mep_cpamadiua1_h (cp_v4hi, cp_v4hi, long);
void mep_cpamadia1_b (cp_v8qi, cp_v8qi, long);
void mep_cpamadia1u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpamulila1_h (cp_v4hi, cp_v4hi, long);
void mep_cpamuliua1_h (cp_v4hi, cp_v4hi, long);
void mep_cpamulia1_b (cp_v8qi, cp_v8qi, long);
void mep_cpamulia1u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpfmadila1s1_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmadiua1s1_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmadia1s1_b (cp_v8qi, cp_v8qi, long);
void mep_cpfmadia1s1u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpfmulila1s1_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmuliua1s1_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmulia1s1_b (cp_v8qi, cp_v8qi, long);
void mep_cpfmulia1s1u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpfmadila1s0_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmadiua1s0_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmadia1s0_b (cp_v8qi, cp_v8qi, long);
void mep_cpfmadia1s0u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpfmulila1s0_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmuliua1s0_h (cp_v4hi, cp_v4hi, long);
void mep_cpfmulia1s0_b (cp_v8qi, cp_v8qi, long);
void mep_cpfmulia1s0u_b (cp_v8uqi, cp_v8uqi, long);
void mep_cpfmadila1_h (cp_v4hi, cp_v4hi, long, long); // volatile
void mep_cpfmadiua1_h (cp_v4hi, cp_v4hi, long, long); // volatile
void mep_cpfmadia1_b (cp_v8qi, cp_v8qi, long, long); // volatile
void mep_cpfmadia1u_b (cp_v8uqi, cp_v8uqi, long, long); // volatile
void mep_cpfmulila1_h (cp_v4hi, cp_v4hi, long, long); // volatile
void mep_cpfmuliua1_h (cp_v4hi, cp_v4hi, long, long); // volatile
void mep_cpfmulia1_b (cp_v8qi, cp_v8qi, long, long); // volatile
void mep_cpfmulia1u_b (cp_v8uqi, cp_v8uqi, long, long); // volatile
void mep_cpamadila1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpamadiua1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpamadia1_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpamadia1u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpamulila1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpamuliua1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpamulia1_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpamulia1u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpfmadila1s1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmadiua1s1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmadia1s1_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpfmadia1s1u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpfmulila1s1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmuliua1s1_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmulia1s1_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpfmulia1s1u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpfmadila1s0_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmadiua1s0_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmadia1s0_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpfmadia1s0u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpfmulila1s0_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmuliua1s0_h (cp_v4hi, cp_v4hi, long); // volatile
void mep_cpfmulia1s0_b (cp_v8qi, cp_v8qi, long); // volatile
void mep_cpfmulia1s0u_b (cp_v8uqi, cp_v8uqi, long); // volatile
void mep_cpacswp (); // volatile
void mep_cpaccpa1 ();
void mep_cpacsuma1 ();
void mep_cpaccpa1 (); // volatile
void mep_cpacsuma1 (); // volatile
void mep_c1nop (); // volatile
void mep_cpfacla0s1_h (cp_v4hi, cp_v4hi);
void mep_cpfacua0s1_h (cp_v4hi, cp_v4hi);
void mep_cpfaca0s1_b (cp_v8qi, cp_v8qi);
void mep_cpfaca0s1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpfsftbla0s1_h (cp_v4hi, cp_v4hi);
void mep_cpfsftbua0s1_h (cp_v4hi, cp_v4hi);
void mep_cpfsftba0s1_b (cp_v8qi, cp_v8qi);
void mep_cpfsftba0s1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpfacla0s0_h (cp_v4hi, cp_v4hi);
void mep_cpfacua0s0_h (cp_v4hi, cp_v4hi);
void mep_cpfaca0s0_b (cp_v8qi, cp_v8qi);
void mep_cpfaca0s0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpfsftbla0s0_h (cp_v4hi, cp_v4hi);
void mep_cpfsftbua0s0_h (cp_v4hi, cp_v4hi);
void mep_cpfsftba0s0_b (cp_v8qi, cp_v8qi);
void mep_cpfsftba0s0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsllia0 (long);
void mep_cpsraia0 (long);
void mep_cpsrlia0 (long);
void mep_cpslla0 (cp_data_bus_int);
void mep_cpsraa0 (cp_data_bus_int);
void mep_cpsrla0 (cp_data_bus_int);
void mep_cpaccpa0 ();
void mep_cpacsuma0 ();
void mep_cpfacla0s1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfacua0s1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfaca0s1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpfaca0s1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpfsftbla0s1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfsftbua0s1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfsftba0s1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpfsftba0s1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpfacla0s0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfacua0s0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfaca0s0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpfaca0s0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpfsftbla0s0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfsftbua0s0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpfsftba0s0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpfsftba0s0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsllia0 (long); // volatile
void mep_cpsraia0 (long); // volatile
void mep_cpsrlia0 (long); // volatile
void mep_cpslla0 (cp_data_bus_int); // volatile
void mep_cpsraa0 (cp_data_bus_int); // volatile
void mep_cpsrla0 (cp_data_bus_int); // volatile
void mep_cpaccpa0 (); // volatile
void mep_cpacsuma0 (); // volatile
cp_v2si mep_cpmovhla0_w ();
cp_v2si mep_cpmovhua0_w ();
cp_v2si mep_cppackla0_w ();
@ -95,86 +95,86 @@ cp_v2si mep_cpmovuua0_w ();
cp_v4hi mep_cpmovla0_h ();
cp_v4hi mep_cpmovua0_h ();
cp_v8qi mep_cpmova0_b ();
void mep_cpsetla0_w (cp_v2si, cp_v2si);
void mep_cpsetua0_w (cp_v2si, cp_v2si);
void mep_cpseta0_h (cp_v4hi, cp_v4hi);
void mep_cpsadla0_h (cp_v4hi, cp_v4hi);
void mep_cpsadua0_h (cp_v4hi, cp_v4hi);
void mep_cpsada0_b (cp_v8qi, cp_v8qi);
void mep_cpsada0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpabsla0_h (cp_v4hi, cp_v4hi);
void mep_cpabsua0_h (cp_v4hi, cp_v4hi);
void mep_cpabsa0_b (cp_v8qi, cp_v8qi);
void mep_cpabsa0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsubacla0_h (cp_v4hi, cp_v4hi);
void mep_cpsubacua0_h (cp_v4hi, cp_v4hi);
void mep_cpsubaca0_b (cp_v8qi, cp_v8qi);
void mep_cpsubaca0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsubla0_h (cp_v4hi, cp_v4hi);
void mep_cpsubua0_h (cp_v4hi, cp_v4hi);
void mep_cpsuba0_b (cp_v8qi, cp_v8qi);
void mep_cpsuba0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpaddacla0_h (cp_v4hi, cp_v4hi);
void mep_cpaddacua0_h (cp_v4hi, cp_v4hi);
void mep_cpaddaca0_b (cp_v8qi, cp_v8qi);
void mep_cpaddaca0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpaddla0_h (cp_v4hi, cp_v4hi);
void mep_cpaddua0_h (cp_v4hi, cp_v4hi);
void mep_cpadda0_b (cp_v8qi, cp_v8qi);
void mep_cpadda0u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsetla0_w (cp_v2si, cp_v2si); // volatile
void mep_cpsetua0_w (cp_v2si, cp_v2si); // volatile
void mep_cpseta0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsadla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsadua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsada0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsada0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpabsla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpabsua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpabsa0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpabsa0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsubacla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubacua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubaca0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsubaca0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsubla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsuba0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsuba0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpaddacla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddacua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddaca0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpaddaca0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpaddla0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddua0_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpadda0_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpadda0u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_c0nop (); // volatile
void mep_cpsmsbslla1_w (cp_v2si, cp_v2si);
void mep_cpsmsbslua1_w (cp_v2si, cp_v2si);
void mep_cpsmsbslla1_h (cp_v4hi, cp_v4hi);
void mep_cpsmsbslua1_h (cp_v4hi, cp_v4hi);
void mep_cpsmadslla1_w (cp_v2si, cp_v2si);
void mep_cpsmadslua1_w (cp_v2si, cp_v2si);
void mep_cpsmadslla1_h (cp_v4hi, cp_v4hi);
void mep_cpsmadslua1_h (cp_v4hi, cp_v4hi);
void mep_cpmulslla1_w (cp_v2si, cp_v2si);
void mep_cpmulslua1_w (cp_v2si, cp_v2si);
void mep_cpmulslla1_h (cp_v4hi, cp_v4hi);
void mep_cpmulslua1_h (cp_v4hi, cp_v4hi);
void mep_cpsmsbla1_w (cp_v2si, cp_v2si);
void mep_cpsmsbua1_w (cp_v2si, cp_v2si);
void mep_cpsmsbla1_h (cp_v4hi, cp_v4hi);
void mep_cpsmsbua1_h (cp_v4hi, cp_v4hi);
void mep_cpsmadla1_w (cp_v2si, cp_v2si);
void mep_cpsmadua1_w (cp_v2si, cp_v2si);
void mep_cpsmadla1_h (cp_v4hi, cp_v4hi);
void mep_cpsmadua1_h (cp_v4hi, cp_v4hi);
void mep_cpmsbla1_w (cp_v2si, cp_v2si);
void mep_cpmsbua1_w (cp_v2si, cp_v2si);
void mep_cpmsbla1u_w (cp_v2usi, cp_v2usi);
void mep_cpmsbua1u_w (cp_v2usi, cp_v2usi);
void mep_cpmsbla1_h (cp_v4hi, cp_v4hi);
void mep_cpmsbua1_h (cp_v4hi, cp_v4hi);
void mep_cpmadla1_w (cp_v2si, cp_v2si);
void mep_cpmadua1_w (cp_v2si, cp_v2si);
void mep_cpmadla1u_w (cp_v2usi, cp_v2usi);
void mep_cpmadua1u_w (cp_v2usi, cp_v2usi);
void mep_cpmadla1_h (cp_v4hi, cp_v4hi);
void mep_cpmadua1_h (cp_v4hi, cp_v4hi);
void mep_cpmada1_b (cp_v8qi, cp_v8qi);
void mep_cpmada1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpmulla1_w (cp_v2si, cp_v2si);
void mep_cpmulua1_w (cp_v2si, cp_v2si);
void mep_cpmulla1u_w (cp_v2usi, cp_v2usi);
void mep_cpmulua1u_w (cp_v2usi, cp_v2usi);
void mep_cpmulla1_h (cp_v4hi, cp_v4hi);
void mep_cpmulua1_h (cp_v4hi, cp_v4hi);
void mep_cpmula1_b (cp_v8qi, cp_v8qi);
void mep_cpmula1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpssda1_b (cp_v8qi, cp_v8qi);
void mep_cpssda1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpssqa1_b (cp_v8qi, cp_v8qi);
void mep_cpssqa1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsllia1 (long);
void mep_cpsraia1 (long);
void mep_cpsrlia1 (long);
void mep_cpslla1 (cp_data_bus_int);
void mep_cpsraa1 (cp_data_bus_int);
void mep_cpsrla1 (cp_data_bus_int);
void mep_cpsmsbslla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmsbslua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmsbslla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmsbslua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmadslla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmadslua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmadslla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmadslua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmulslla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmulslua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmulslla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmulslua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmsbla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmsbua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmsbla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmsbua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmadla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmadua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsmadla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsmadua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmsbla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmsbua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmsbla1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmsbua1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmsbla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmsbua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmadla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmadua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmadla1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmadua1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmadla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmadua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmada1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpmada1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpmulla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmulua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpmulla1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmulua1u_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpmulla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmulua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpmula1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpmula1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpssda1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpssda1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpssqa1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpssqa1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsllia1 (long); // volatile
void mep_cpsraia1 (long); // volatile
void mep_cpsrlia1 (long); // volatile
void mep_cpslla1 (cp_data_bus_int); // volatile
void mep_cpsraa1 (cp_data_bus_int); // volatile
void mep_cpsrla1 (cp_data_bus_int); // volatile
cp_v2si mep_cpmovhla1_w ();
cp_v2si mep_cpmovhua1_w ();
cp_v2si mep_cppackla1_w ();
@ -190,33 +190,33 @@ cp_v2si mep_cpmovuua1_w ();
cp_v4hi mep_cpmovla1_h ();
cp_v4hi mep_cpmovua1_h ();
cp_v8qi mep_cpmova1_b ();
void mep_cpsetla1_w (cp_v2si, cp_v2si);
void mep_cpsetua1_w (cp_v2si, cp_v2si);
void mep_cpseta1_h (cp_v4hi, cp_v4hi);
void mep_cpsadla1_h (cp_v4hi, cp_v4hi);
void mep_cpsadua1_h (cp_v4hi, cp_v4hi);
void mep_cpsada1_b (cp_v8qi, cp_v8qi);
void mep_cpsada1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpabsla1_h (cp_v4hi, cp_v4hi);
void mep_cpabsua1_h (cp_v4hi, cp_v4hi);
void mep_cpabsa1_b (cp_v8qi, cp_v8qi);
void mep_cpabsa1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsubacla1_h (cp_v4hi, cp_v4hi);
void mep_cpsubacua1_h (cp_v4hi, cp_v4hi);
void mep_cpsubaca1_b (cp_v8qi, cp_v8qi);
void mep_cpsubaca1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsubla1_h (cp_v4hi, cp_v4hi);
void mep_cpsubua1_h (cp_v4hi, cp_v4hi);
void mep_cpsuba1_b (cp_v8qi, cp_v8qi);
void mep_cpsuba1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpaddacla1_h (cp_v4hi, cp_v4hi);
void mep_cpaddacua1_h (cp_v4hi, cp_v4hi);
void mep_cpaddaca1_b (cp_v8qi, cp_v8qi);
void mep_cpaddaca1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpaddla1_h (cp_v4hi, cp_v4hi);
void mep_cpaddua1_h (cp_v4hi, cp_v4hi);
void mep_cpadda1_b (cp_v8qi, cp_v8qi);
void mep_cpadda1u_b (cp_v8uqi, cp_v8uqi);
void mep_cpsetla1_w (cp_v2si, cp_v2si); // volatile
void mep_cpsetua1_w (cp_v2si, cp_v2si); // volatile
void mep_cpseta1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsadla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsadua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsada1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsada1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpabsla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpabsua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpabsa1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpabsa1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsubacla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubacua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubaca1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsubaca1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpsubla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsubua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpsuba1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpsuba1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpaddacla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddacua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddaca1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpaddaca1u_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpaddla1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpaddua1_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpadda1_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpadda1u_b (cp_v8uqi, cp_v8uqi); // volatile
cp_data_bus_int mep_cdmovi (long);
cp_data_bus_int mep_cdmoviu (long);
cp_v2si mep_cpmovi_w (long);
@ -274,23 +274,23 @@ void mep_cpacmpne_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpacmpeq_w (cp_v2si, cp_v2si); // volatile
void mep_cpacmpeq_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpacmpeq_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpcmpge_w (cp_v2si, cp_v2si);
void mep_cpcmpgeu_w (cp_v2usi, cp_v2usi);
void mep_cpcmpge_h (cp_v4hi, cp_v4hi);
void mep_cpcmpge_b (cp_v8qi, cp_v8qi);
void mep_cpcmpgeu_b (cp_v8uqi, cp_v8uqi);
void mep_cpcmpgt_w (cp_v2si, cp_v2si);
void mep_cpcmpgtu_w (cp_v2usi, cp_v2usi);
void mep_cpcmpgt_h (cp_v4hi, cp_v4hi);
void mep_cpcmpgt_b (cp_v8qi, cp_v8qi);
void mep_cpcmpgtu_b (cp_v8uqi, cp_v8uqi);
void mep_cpcmpne_w (cp_v2si, cp_v2si);
void mep_cpcmpne_h (cp_v4hi, cp_v4hi);
void mep_cpcmpne_b (cp_v8qi, cp_v8qi);
void mep_cpcmpeq_w (cp_v2si, cp_v2si);
void mep_cpcmpeq_h (cp_v4hi, cp_v4hi);
void mep_cpcmpeq_b (cp_v8qi, cp_v8qi);
void mep_cpcmpeqz_b (cp_v8qi, cp_v8qi);
void mep_cpcmpge_w (cp_v2si, cp_v2si); // volatile
void mep_cpcmpgeu_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpcmpge_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpcmpge_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpcmpgeu_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpcmpgt_w (cp_v2si, cp_v2si); // volatile
void mep_cpcmpgtu_w (cp_v2usi, cp_v2usi); // volatile
void mep_cpcmpgt_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpcmpgt_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpcmpgtu_b (cp_v8uqi, cp_v8uqi); // volatile
void mep_cpcmpne_w (cp_v2si, cp_v2si); // volatile
void mep_cpcmpne_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpcmpne_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpcmpeq_w (cp_v2si, cp_v2si); // volatile
void mep_cpcmpeq_h (cp_v4hi, cp_v4hi); // volatile
void mep_cpcmpeq_b (cp_v8qi, cp_v8qi); // volatile
void mep_cpcmpeqz_b (cp_v8qi, cp_v8qi); // volatile
cp_data_bus_int mep_cdcastw (cp_data_bus_int);
cp_data_bus_int mep_cdcastuw (cp_data_bus_int);
cp_v2si mep_cpcasth_w (cp_v2si);

File diff suppressed because it is too large Load Diff

View File

@ -5,14 +5,14 @@
#ifdef WANT_GCC_DECLARATIONS
#define FIRST_SHADOW_REGISTER 113
#define LAST_SHADOW_REGISTER 140
#define LAST_SHADOW_REGISTER 122
#define FIXED_SHADOW_REGISTERS \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
#define CALL_USED_SHADOW_REGISTERS FIXED_SHADOW_REGISTERS
#define SHADOW_REG_ALLOC_ORDER \
113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140
113, 114, 115, 116, 117, 118, 119, 120, 121, 122
#define SHADOW_REGISTER_NAMES \
"$shadow87", "$shadow107", "$shadow106", "$shadow105", "$shadow104", "$shadow111", "$shadow110", "$shadow109", "$shadow108", "$shadow84", "$shadow81", "$shadow86", "$shadow99", "$shadow98", "$shadow97", "$shadow96", "$shadow103", "$shadow102", "$shadow101", "$shadow100", "$shadow17", "$shadow40", "$shadow24", "$shadow23", "$shadow22", "$shadow21", "$shadow20", "$shadow18"
"$shadow84", "$shadow81", "$shadow17", "$shadow40", "$shadow24", "$shadow23", "$shadow22", "$shadow21", "$shadow20", "$shadow18"

File diff suppressed because it is too large Load Diff

View File

@ -2525,6 +2525,13 @@ mep_interrupt_saved_reg (int r)
/* Functions we call might clobber these. */
if (call_used_regs[r] && !fixed_regs[r])
return true;
/* Additional registers that need to be saved for IVC2. */
if (TARGET_IVC2
&& (r == FIRST_CCR_REGNO + 1
|| (r >= FIRST_CCR_REGNO + 8 && r <= FIRST_CCR_REGNO + 11)
|| (r >= FIRST_CCR_REGNO + 16 && r <= FIRST_CCR_REGNO + 31)))
return true;
return false;
}
@ -7228,19 +7235,6 @@ mep_handle_option (size_t code,
for (i=6; i<8; i++)
call_used_regs[i+48] = 0;
call_used_regs[FIRST_CCR_REGNO + 1] = 0;
fixed_regs[FIRST_CCR_REGNO + 1] = 0;
for (i=8; i<=11; i++)
{
call_used_regs[FIRST_CCR_REGNO + i] = 0;
fixed_regs[FIRST_CCR_REGNO + i] = 0;
}
for (i=16; i<=31; i++)
{
call_used_regs[FIRST_CCR_REGNO + i] = 0;
fixed_regs[FIRST_CCR_REGNO + i] = 0;
}
#define RN(n,s) reg_names[FIRST_CCR_REGNO + n] = s
RN (0, "$csar0");
RN (1, "$cc");