Mercurial > pub > dyncall > dyncall
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