Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / SLOF / include / macros.h
diff --git a/qemu/roms/SLOF/include/macros.h b/qemu/roms/SLOF/include/macros.h
new file mode 100644 (file)
index 0000000..f519bb8
--- /dev/null
@@ -0,0 +1,58 @@
+/******************************************************************************
+ * Copyright (c) 2004, 2008 IBM Corporation
+ * All rights reserved.
+ * This program and the accompanying materials
+ * are made available under the terms of the BSD License
+ * which accompanies this distribution, and is available at
+ * http://www.opensource.org/licenses/bsd-license.php
+ *
+ * Contributors:
+ *     IBM Corporation - initial implementation
+ *****************************************************************************/
+
+#define LOAD64(rn,name)                        \
+       lis     rn,name##@highest;      \
+       ori     rn,rn,name##@higher;    \
+       rldicr  rn,rn,32,31;            \
+       oris    rn,rn,name##@h;         \
+       ori     rn,rn,name##@l
+
+#define LOAD32(rn, name)               \
+       lis     rn,name##@h;            \
+       ori     rn,rn,name##@l
+
+// load 32 bit constant in little endian order
+#define LOAD32le(rn,name) \
+        lis     rn,(((name>>8)&0x00FF)|((name<<8)&0xFF00));  \
+        ori     rn,rn,(((name>>24)&0x00FF)|((name>>8)&0xFF00))
+
+// load 16 bit constant in little endian order
+#define LOAD16le(rn,name) \
+        li      rn,(((name>>8)&0x00FF)|((name<<8)&0xFF00))
+
+#define ENTRY(func_name)              \
+       .text;                        \
+       .align  2;                    \
+       .globl  .func_name;           \
+        .func_name:                   \
+       .globl  func_name;            \
+        func_name:
+
+#define C_ENTRY(func_name)                     \
+       .section        ".text";                \
+       .align 2;                               \
+       .globl func_name;                       \
+       .section        ".opd","aw";            \
+       .align 3;                               \
+ func_name:                                    \
+       .quad   .func_name,.TOC.@tocbase,0;     \
+       .previous;                              \
+       .size   func_name,24;                   \
+       .type   .func_name,@function;           \
+       .globl  .func_name;                     \
+ .func_name:
+
+#define ASM_ENTRY(fn)  \
+       .globl  fn;     \
+fn:
+