@@ -4,14 +4,14 @@
#include "sys.h"
#include "crisutils.h"
-static inline int cris_abs(int n)
+static always_inline int cris_abs(int n)
{
int r;
asm ("abs\t%1, %0\n" : "=r" (r) : "r" (n));
return r;
}
-static inline void
+static always_inline void
verify_abs(int val, int res,
const int n, const int z, const int v, const int c)
{
@@ -4,7 +4,7 @@
#include "sys.h"
#include "crisutils.h"
-static inline int cris_addc(int a, const int b)
+static always_inline int cris_addc(int a, const int b)
{
asm ("addc\t%1, %0\n" : "+r" (a) : "r" (b));
return a;
@@ -5,14 +5,14 @@
#include "crisutils.h"
/* need to avoid acr as source here. */
-static inline int cris_addc_m(int a, const int *b)
+static always_inline int cris_addc_m(int a, const int *b)
{
asm volatile ("addc [%1], %0\n" : "+r" (a) : "r" (b));
return a;
}
/* 'b' is a crisv32 constrain to avoid postinc with $acr. */
-static inline int cris_addc_pi_m(int a, int **b)
+static always_inline int cris_addc_pi_m(int a, int **b)
{
asm volatile ("addc [%1+], %0\n" : "+r" (a), "+b" (*b));
return a;
@@ -4,21 +4,21 @@
#include "sys.h"
#include "crisutils.h"
-static inline int cris_bound_b(int v, int b)
+static always_inline int cris_bound_b(int v, int b)
{
int r = v;
asm ("bound.b\t%1, %0\n" : "+r" (r) : "ri" (b));
return r;
}
-static inline int cris_bound_w(int v, int b)
+static always_inline int cris_bound_w(int v, int b)
{
int r = v;
asm ("bound.w\t%1, %0\n" : "+r" (r) : "ri" (b));
return r;
}
-static inline int cris_bound_d(int v, int b)
+static always_inline int cris_bound_d(int v, int b)
{
int r = v;
asm ("bound.d\t%1, %0\n" : "+r" (r) : "ri" (b));
@@ -4,22 +4,22 @@
#include "sys.h"
#include "crisutils.h"
-static inline void cris_ftag_i(unsigned int x)
+static always_inline void cris_ftag_i(unsigned int x)
{
register unsigned int v asm("$r10") = x;
asm ("ftagi\t[%0]\n" : : "r" (v) );
}
-static inline void cris_ftag_d(unsigned int x)
+static always_inline void cris_ftag_d(unsigned int x)
{
register unsigned int v asm("$r10") = x;
asm ("ftagd\t[%0]\n" : : "r" (v) );
}
-static inline void cris_fidx_i(unsigned int x)
+static always_inline void cris_fidx_i(unsigned int x)
{
register unsigned int v asm("$r10") = x;
asm ("fidxi\t[%0]\n" : : "r" (v) );
}
-static inline void cris_fidx_d(unsigned int x)
+static always_inline void cris_fidx_d(unsigned int x)
{
register unsigned int v asm("$r10") = x;
asm ("fidxd\t[%0]\n" : : "r" (v) );
@@ -5,12 +5,12 @@
#include "crisutils.h"
-static inline int64_t add64(const int64_t a, const int64_t b)
+static always_inline int64_t add64(const int64_t a, const int64_t b)
{
return a + b;
}
-static inline int64_t sub64(const int64_t a, const int64_t b)
+static always_inline int64_t sub64(const int64_t a, const int64_t b)
{
return a - b;
}
@@ -3,7 +3,7 @@
#include <stdint.h>
#include "sys.h"
-static inline int cris_lz(int x)
+static always_inline int cris_lz(int x)
{
int r;
asm ("lz\t%1, %0\n" : "=r" (r) : "r" (x));
@@ -9,7 +9,7 @@
#define B 2
#define R 1
-static inline int cris_swap(const int mode, int x)
+static always_inline int cris_swap(const int mode, int x)
{
switch (mode)
{
@@ -13,57 +13,57 @@ void _err(void) {
_fail(tst_cc_loc);
}
-static inline void cris_tst_cc_n1(void)
+static always_inline void cris_tst_cc_n1(void)
{
asm volatile ("bpl _err\n"
"nop\n");
}
-static inline void cris_tst_cc_n0(void)
+static always_inline void cris_tst_cc_n0(void)
{
asm volatile ("bmi _err\n"
"nop\n");
}
-static inline void cris_tst_cc_z1(void)
+static always_inline void cris_tst_cc_z1(void)
{
asm volatile ("bne _err\n"
"nop\n");
}
-static inline void cris_tst_cc_z0(void)
+static always_inline void cris_tst_cc_z0(void)
{
asm volatile ("beq _err\n"
"nop\n");
}
-static inline void cris_tst_cc_v1(void)
+static always_inline void cris_tst_cc_v1(void)
{
asm volatile ("bvc _err\n"
"nop\n");
}
-static inline void cris_tst_cc_v0(void)
+static always_inline void cris_tst_cc_v0(void)
{
asm volatile ("bvs _err\n"
"nop\n");
}
-static inline void cris_tst_cc_c1(void)
+static always_inline void cris_tst_cc_c1(void)
{
asm volatile ("bcc _err\n"
"nop\n");
}
-static inline void cris_tst_cc_c0(void)
+static always_inline void cris_tst_cc_c0(void)
{
asm volatile ("bcs _err\n"
"nop\n");
}
-static inline void cris_tst_mov_cc(int n, int z)
+static always_inline void cris_tst_mov_cc(int n, int z)
{
if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
if (z) cris_tst_cc_z1(); else cris_tst_cc_z0();
asm volatile ("" : : "g" (_err));
}
-static inline void cris_tst_cc(const int n, const int z,
+static always_inline void cris_tst_cc(const int n, const int z,
const int v, const int c)
{
if (n) cris_tst_cc_n1(); else cris_tst_cc_n0();
@@ -3,6 +3,8 @@
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
+#define always_inline inline __attribute__((always_inline))
+
#define CURRENT_LOCATION __FILE__ ":" TOSTRING(__LINE__)
#define err() \