diff portasm/portasm-ppc64.S @ 7:7ca57dbefed4

- ppc64 update from Masanori
author cslag
date Sun, 19 Jul 2015 13:05:34 +0200
parents
children 6a8aac9b2bcf
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/portasm/portasm-ppc64.S	Sun Jul 19 13:05:34 2015 +0200
@@ -0,0 +1,119 @@
+/*
+
+ Package: dyncall
+ Library: portasm
+ File: portasm/portasm-ppc64.S
+ Description: Portable Assembler Macros for ppc64
+ License:
+
+   Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com>
+
+   Permission to use, copy, modify, and distribute this software for any
+   purpose with or without fee is hereby granted, provided that the above
+   copyright notice and this permission notice appear in all copies.
+
+   THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+*/
+
+
+#include "../autovar/autovar_OS.h"
+
+#if DC__ABI_PPC64_ELF_V != 2  /* v1 */
+#define GLOBAL_C(X) \
+.global X; \
+.type X, @function; \
+.section .opd, "aw"; \
+.align 3;
+#else                         /* v2 */
+#define GLOBAL_C(X) \
+.global X; \
+.type X, @function;
+#endif
+
+#if DC__ABI_PPC64_ELF_V != 2  /* v1 */
+#define ENTRY_C(X) \
+X: \
+.quad .X, .TOC.@tocbase, 0; \
+.previous; \
+.global .X; \
+.X:
+#else                         /* v2 */
+#define ENTRY_C(X) \
+X: \
+0: \
+addis r2, r12,.TOC.-0b@ha; \
+addi  r2, r2,.TOC.-0b@l; \
+.localentry X,.-X;
+#endif
+
+#define r0 0
+#define r1 1
+#define r2 2
+#define r3 3
+#define r4 4
+#define r5 5
+#define r6 6
+#define r7 7
+#define r8 8
+#define r9 9
+#define r10 10
+#define r11 11
+#define r12 12
+#define r13 13
+#define r14 14
+#define r15 15
+#define r16 16
+#define r17 17
+#define r18 18
+#define r19 19
+#define r20 20
+#define r21 21
+#define r22 22
+#define r23 23
+#define r24 24
+#define r25 25
+#define r26 26
+#define r27 27
+#define r28 28
+#define r29 29
+#define r30 30
+#define r31 31
+#define f0 0
+#define f1 1
+#define f2 2
+#define f3 3
+#define f4 4
+#define f5 5
+#define f6 6
+#define f7 7
+#define f8 8
+#define f9 9
+#define f10 10
+#define f11 11
+#define f12 12
+#define f13 13
+#define f14 14
+#define f15 15
+#define f16 16
+#define f17 17
+#define f18 18
+#define f19 19
+#define f20 20
+#define f21 21
+#define f22 22
+#define f23 23
+#define f24 24
+#define f25 25
+#define f26 26
+#define f27 27
+#define f28 28
+#define f29 29
+#define f30 30
+#define f31 31