|
@@ -494,3 +494,55 @@ struct linux_smonblock {
|
|
|
long (*__vec)(long) = (void *) romvec->dest; \
|
|
|
\
|
|
|
__res = __vec(__a1); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+
|
|
|
+#define ARC_CALL2(dest, a1, a2) \
|
|
|
+({ long __res; \
|
|
|
+ long __a1 = (long) (a1); \
|
|
|
+ long __a2 = (long) (a2); \
|
|
|
+ long (*__vec)(long, long) = (void *) romvec->dest; \
|
|
|
+ \
|
|
|
+ __res = __vec(__a1, __a2); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+
|
|
|
+#define ARC_CALL3(dest, a1, a2, a3) \
|
|
|
+({ long __res; \
|
|
|
+ long __a1 = (long) (a1); \
|
|
|
+ long __a2 = (long) (a2); \
|
|
|
+ long __a3 = (long) (a3); \
|
|
|
+ long (*__vec)(long, long, long) = (void *) romvec->dest; \
|
|
|
+ \
|
|
|
+ __res = __vec(__a1, __a2, __a3); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+
|
|
|
+#define ARC_CALL4(dest, a1, a2, a3, a4) \
|
|
|
+({ long __res; \
|
|
|
+ long __a1 = (long) (a1); \
|
|
|
+ long __a2 = (long) (a2); \
|
|
|
+ long __a3 = (long) (a3); \
|
|
|
+ long __a4 = (long) (a4); \
|
|
|
+ long (*__vec)(long, long, long, long) = (void *) romvec->dest; \
|
|
|
+ \
|
|
|
+ __res = __vec(__a1, __a2, __a3, __a4); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+
|
|
|
+#define ARC_CALL5(dest, a1, a2, a3, a4, a5) \
|
|
|
+({ long __res; \
|
|
|
+ long __a1 = (long) (a1); \
|
|
|
+ long __a2 = (long) (a2); \
|
|
|
+ long __a3 = (long) (a3); \
|
|
|
+ long __a4 = (long) (a4); \
|
|
|
+ long __a5 = (long) (a5); \
|
|
|
+ long (*__vec)(long, long, long, long, long); \
|
|
|
+ __vec = (void *) romvec->dest; \
|
|
|
+ \
|
|
|
+ __res = __vec(__a1, __a2, __a3, __a4, __a5); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+#endif /* both kernel and ARC either 32-bit or 64-bit */
|
|
|
+
|
|
|
+#endif /* _ASM_SGIARCS_H */
|