annotate portasm/portasm-ppc64.S @ 357:d982a00c2177

- PPC64 asm syntax fix, specifying explicitly comparison mode for cmpi (newer toolchains complain, older ones took optional field of instruction which happened to be same value)
author Tassilo Philipp
date Tue, 25 Feb 2020 18:16:13 +0100
parents 7ca57dbefed4
children 6a8aac9b2bcf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
1 /*
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
2
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
3 Package: dyncall
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
4 Library: portasm
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
5 File: portasm/portasm-ppc64.S
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
6 Description: Portable Assembler Macros for ppc64
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
7 License:
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
8
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
9 Copyright (c) 2014-2015 Masanori Mitsugi <mitsugi@linux.vnet.ibm.com>
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
10
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
11 Permission to use, copy, modify, and distribute this software for any
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
12 purpose with or without fee is hereby granted, provided that the above
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
13 copyright notice and this permission notice appear in all copies.
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
14
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
15 THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
16 WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
17 MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
18 ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
21 OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
22
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
23 */
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
24
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
25
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
26 #include "../autovar/autovar_OS.h"
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
27
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
28 #if DC__ABI_PPC64_ELF_V != 2 /* v1 */
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
29 #define GLOBAL_C(X) \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
30 .global X; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
31 .type X, @function; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
32 .section .opd, "aw"; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
33 .align 3;
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
34 #else /* v2 */
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
35 #define GLOBAL_C(X) \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
36 .global X; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
37 .type X, @function;
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
38 #endif
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
39
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
40 #if DC__ABI_PPC64_ELF_V != 2 /* v1 */
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
41 #define ENTRY_C(X) \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
42 X: \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
43 .quad .X, .TOC.@tocbase, 0; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
44 .previous; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
45 .global .X; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
46 .X:
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
47 #else /* v2 */
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
48 #define ENTRY_C(X) \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
49 X: \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
50 0: \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
51 addis r2, r12,.TOC.-0b@ha; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
52 addi r2, r2,.TOC.-0b@l; \
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
53 .localentry X,.-X;
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
54 #endif
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
55
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
56 #define r0 0
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
57 #define r1 1
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
58 #define r2 2
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
59 #define r3 3
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
60 #define r4 4
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
61 #define r5 5
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
62 #define r6 6
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
63 #define r7 7
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
64 #define r8 8
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
65 #define r9 9
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
66 #define r10 10
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
67 #define r11 11
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
68 #define r12 12
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
69 #define r13 13
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
70 #define r14 14
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
71 #define r15 15
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
72 #define r16 16
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
73 #define r17 17
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
74 #define r18 18
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
75 #define r19 19
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
76 #define r20 20
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
77 #define r21 21
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
78 #define r22 22
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
79 #define r23 23
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
80 #define r24 24
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
81 #define r25 25
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
82 #define r26 26
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
83 #define r27 27
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
84 #define r28 28
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
85 #define r29 29
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
86 #define r30 30
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
87 #define r31 31
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
88 #define f0 0
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
89 #define f1 1
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
90 #define f2 2
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
91 #define f3 3
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
92 #define f4 4
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
93 #define f5 5
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
94 #define f6 6
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
95 #define f7 7
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
96 #define f8 8
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
97 #define f9 9
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
98 #define f10 10
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
99 #define f11 11
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
100 #define f12 12
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
101 #define f13 13
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
102 #define f14 14
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
103 #define f15 15
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
104 #define f16 16
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
105 #define f17 17
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
106 #define f18 18
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
107 #define f19 19
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
108 #define f20 20
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
109 #define f21 21
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
110 #define f22 22
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
111 #define f23 23
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
112 #define f24 24
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
113 #define f25 25
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
114 #define f26 26
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
115 #define f27 27
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
116 #define f28 28
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
117 #define f29 29
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
118 #define f30 30
7ca57dbefed4 - ppc64 update from Masanori
cslag
parents:
diff changeset
119 #define f31 31