|
@@ -180,9 +180,20 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
|
|
|
#define REST_32VRS_TRANSACT(n,b,base) REST_16VRS_TRANSACT(n,b,base); \
|
|
|
REST_16VRS_TRANSACT(n+16,b,base)
|
|
|
|
|
|
+#ifdef __BIG_ENDIAN__
|
|
|
+#define STXVD2X_ROT(n,b,base) STXVD2X(n,b,base)
|
|
|
+#define LXVD2X_ROT(n,b,base) LXVD2X(n,b,base)
|
|
|
+#else
|
|
|
+#define STXVD2X_ROT(n,b,base) XXSWAPD(n,n); \
|
|
|
+ STXVD2X(n,b,base); \
|
|
|
+ XXSWAPD(n,n)
|
|
|
+
|
|
|
+#define LXVD2X_ROT(n,b,base) LXVD2X(n,b,base); \
|
|
|
+ XXSWAPD(n,n)
|
|
|
+#endif
|
|
|
|
|
|
#define SAVE_VSR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VSR0+(16*(n)); \
|
|
|
- STXVD2X(n,R##base,R##b)
|
|
|
+ STXVD2X_ROT(n,R##base,R##b)
|
|
|
#define SAVE_2VSRS_TRANSACT(n,b,base) SAVE_VSR_TRANSACT(n,b,base); \
|
|
|
SAVE_VSR_TRANSACT(n+1,b,base)
|
|
|
#define SAVE_4VSRS_TRANSACT(n,b,base) SAVE_2VSRS_TRANSACT(n,b,base); \
|
|
@@ -195,7 +206,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
|
|
|
SAVE_16VSRS_TRANSACT(n+16,b,base)
|
|
|
|
|
|
#define REST_VSR_TRANSACT(n,b,base) li b,THREAD_TRANSACT_VSR0+(16*(n)); \
|
|
|
- LXVD2X(n,R##base,R##b)
|
|
|
+ LXVD2X_ROT(n,R##base,R##b)
|
|
|
#define REST_2VSRS_TRANSACT(n,b,base) REST_VSR_TRANSACT(n,b,base); \
|
|
|
REST_VSR_TRANSACT(n+1,b,base)
|
|
|
#define REST_4VSRS_TRANSACT(n,b,base) REST_2VSRS_TRANSACT(n,b,base); \
|
|
@@ -208,13 +219,15 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
|
|
|
REST_16VSRS_TRANSACT(n+16,b,base)
|
|
|
|
|
|
/* Save the lower 32 VSRs in the thread VSR region */
|
|
|
-#define SAVE_VSR(n,b,base) li b,THREAD_VSR0+(16*(n)); STXVD2X(n,R##base,R##b)
|
|
|
+#define SAVE_VSR(n,b,base) li b,THREAD_VSR0+(16*(n)); \
|
|
|
+ STXVD2X_ROT(n,R##base,R##b)
|
|
|
#define SAVE_2VSRS(n,b,base) SAVE_VSR(n,b,base); SAVE_VSR(n+1,b,base)
|
|
|
#define SAVE_4VSRS(n,b,base) SAVE_2VSRS(n,b,base); SAVE_2VSRS(n+2,b,base)
|
|
|
#define SAVE_8VSRS(n,b,base) SAVE_4VSRS(n,b,base); SAVE_4VSRS(n+4,b,base)
|
|
|
#define SAVE_16VSRS(n,b,base) SAVE_8VSRS(n,b,base); SAVE_8VSRS(n+8,b,base)
|
|
|
#define SAVE_32VSRS(n,b,base) SAVE_16VSRS(n,b,base); SAVE_16VSRS(n+16,b,base)
|
|
|
-#define REST_VSR(n,b,base) li b,THREAD_VSR0+(16*(n)); LXVD2X(n,R##base,R##b)
|
|
|
+#define REST_VSR(n,b,base) li b,THREAD_VSR0+(16*(n)); \
|
|
|
+ LXVD2X_ROT(n,R##base,R##b)
|
|
|
#define REST_2VSRS(n,b,base) REST_VSR(n,b,base); REST_VSR(n+1,b,base)
|
|
|
#define REST_4VSRS(n,b,base) REST_2VSRS(n,b,base); REST_2VSRS(n+2,b,base)
|
|
|
#define REST_8VSRS(n,b,base) REST_4VSRS(n,b,base); REST_4VSRS(n+4,b,base)
|