Use bbci.l/bbsi.l instead of bbci/bbsi, as they are assembly macros that
accept little-endian bit number and produce correct immediate for both
little and big endian configurations. Choose value loaded into register
for bbc/bbs opcodes based on configuration endianness.
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
test bbc
movi a2, 0xfffffffd
- movi a3, 0xffffff01
+#undef BIT
+#if XCHAL_HAVE_BE
+#define BIT 0xfffffffe
+#else
+#define BIT 0xffffff01
+#endif
+ movi a3, BIT
bbc a2, a3, 1f
test_fail
1:
movi a2, 8
- movi a3, 0xffffff03
+#undef BIT
+#if XCHAL_HAVE_BE
+#define BIT 0xfffffffc
+#else
+#define BIT 0xffffff03
+#endif
+ movi a3, BIT
bbc a2, a3, 1f
j 2f
1:
test bbci
movi a2, 0xfffdffff
- bbci a2, 17, 1f
+ bbci.l a2, 17, 1f
test_fail
1:
movi a2, 0x00020000
- bbci a2, 17, 1f
+ bbci.l a2, 17, 1f
j 2f
1:
test_fail
test bbs
movi a2, 8
- movi a3, 0xffffff03
+#undef BIT
+#if XCHAL_HAVE_BE
+#define BIT 0xfffffffc
+#else
+#define BIT 0xffffff03
+#endif
+ movi a3, BIT
bbs a2, a3, 1f
test_fail
1:
movi a2, 0xfffffffd
- movi a3, 0xffffff01
+#undef BIT
+#if XCHAL_HAVE_BE
+#define BIT 0xfffffffe
+#else
+#define BIT 0xffffff01
+#endif
+ movi a3, BIT
bbs a2, a3, 1f
j 2f
1:
test bbsi
movi a2, 0x00020000
- bbsi a2, 17, 1f
+ bbsi.l a2, 17, 1f
test_fail
1:
movi a2, 0xfffdffff
- bbsi a2, 17, 1f
+ bbsi.l a2, 17, 1f
j 2f
1:
test_fail