summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/microblaze/mb_endian.h
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2013-07-16 07:48:53 +0000
committerCorinna Vinschen <corinna@vinschen.de>2013-07-16 07:48:53 +0000
commit6041792ec6b89f5e9eae79d8addbb0f706f9addd (patch)
tree05a286d63fb8d9fddb81195e6ff80a2f6ad8b2be /newlib/libc/machine/microblaze/mb_endian.h
parentf6ddaa2a292bc9e4d5190a413c0b4c1fa7c81374 (diff)
downloadcygnal-6041792ec6b89f5e9eae79d8addbb0f706f9addd.tar.gz
cygnal-6041792ec6b89f5e9eae79d8addbb0f706f9addd.tar.bz2
cygnal-6041792ec6b89f5e9eae79d8addbb0f706f9addd.zip
* configure.host: Change to microblaze*.
* libc/include/machine/ieeefp.h: Add __MICROBLAZEEL__. * libc/machine/microblaze/mb_endian.h: New file. * newlib/libc/machine/microblaze/strcmp.c: Add little endian support. * newlib/libc/machine/microblaze/strcpy.c: Likewise. * newlib/libc/machine/microblaze/strlen.c: Likewise. * configure.in: Change to microblaze*. * configure: Regenerate. * microblaze/xilinx.ld: Remove OUTPUT_FORMAT.
Diffstat (limited to 'newlib/libc/machine/microblaze/mb_endian.h')
-rw-r--r--newlib/libc/machine/microblaze/mb_endian.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/newlib/libc/machine/microblaze/mb_endian.h b/newlib/libc/machine/microblaze/mb_endian.h
new file mode 100644
index 000000000..fb217ec85
--- /dev/null
+++ b/newlib/libc/machine/microblaze/mb_endian.h
@@ -0,0 +1,15 @@
+#ifndef _MB_ENDIAN_H
+#define _MB_ENDIAN_H
+
+/* Convenience macros for loading and store 4 bytes in a byte invariant way with
+ * a singe instruction. Endianess affects this and we rely on MicroBlaze
+ * load/store reverse instructions to do the trick on little-endian systems.
+ */
+#ifdef __LITTLE_ENDIAN__
+#define LOAD4BYTES(rD,rA,rB) "\tlwr\t" rD ", " rA ", " rB "\n"
+#define STORE4BYTES(rD,rA,rB) "\tswr\t" rD ", " rA ", " rB "\n"
+#else
+#define LOAD4BYTES(rD,rA,rB) "\tlw\t" rD ", " rA ", " rB "\n"
+#define STORE4BYTES(rD,rA,rB) "\tsw\t" rD ", " rA ", " rB "\n"
+#endif
+#endif