aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing
diff options
context:
space:
mode:
Diffstat (limited to 'tools/testing')
-rw-r--r--tools/testing/selftests/powerpc/Makefile3
-rw-r--r--tools/testing/selftests/powerpc/include/reg.h61
-rw-r--r--tools/testing/selftests/powerpc/lib/reg.S132
-rw-r--r--tools/testing/selftests/powerpc/ptrace/.gitignore1
-rw-r--r--tools/testing/selftests/powerpc/ptrace/Makefile12
-rw-r--r--tools/testing/selftests/powerpc/ptrace/ptrace-gpr.c123
-rw-r--r--tools/testing/selftests/powerpc/ptrace/ptrace-gpr.h74
-rw-r--r--tools/testing/selftests/powerpc/ptrace/ptrace.h376
8 files changed, 781 insertions, 1 deletions
diff --git a/tools/testing/selftests/powerpc/Makefile b/tools/testing/selftests/powerpc/Makefile
index 561afa1921b9..c2c4211ba58b 100644
--- a/tools/testing/selftests/powerpc/Makefile
+++ b/tools/testing/selftests/powerpc/Makefile
@@ -26,7 +26,8 @@ SUB_DIRS = alignment \
26 syscalls \ 26 syscalls \
27 tm \ 27 tm \
28 vphn \ 28 vphn \
29 math 29 math \
30 ptrace
30 31
31endif 32endif
32 33
diff --git a/tools/testing/selftests/powerpc/include/reg.h b/tools/testing/selftests/powerpc/include/reg.h
index bb843b2d9bac..4afdebcce4cd 100644
--- a/tools/testing/selftests/powerpc/include/reg.h
+++ b/tools/testing/selftests/powerpc/include/reg.h
@@ -81,4 +81,65 @@
81#define STXVD2X(xs, ra, rb) .long (0x7c000798 | VSX_XX1((xs), (ra), (rb))) 81#define STXVD2X(xs, ra, rb) .long (0x7c000798 | VSX_XX1((xs), (ra), (rb)))
82#define LXVD2X(xs, ra, rb) .long (0x7c000698 | VSX_XX1((xs), (ra), (rb))) 82#define LXVD2X(xs, ra, rb) .long (0x7c000698 | VSX_XX1((xs), (ra), (rb)))
83 83
84#define ASM_LOAD_GPR_IMMED(_asm_symbol_name_immed) \
85 "li 14, %[" #_asm_symbol_name_immed "];" \
86 "li 15, %[" #_asm_symbol_name_immed "];" \
87 "li 16, %[" #_asm_symbol_name_immed "];" \
88 "li 17, %[" #_asm_symbol_name_immed "];" \
89 "li 18, %[" #_asm_symbol_name_immed "];" \
90 "li 19, %[" #_asm_symbol_name_immed "];" \
91 "li 20, %[" #_asm_symbol_name_immed "];" \
92 "li 21, %[" #_asm_symbol_name_immed "];" \
93 "li 22, %[" #_asm_symbol_name_immed "];" \
94 "li 23, %[" #_asm_symbol_name_immed "];" \
95 "li 24, %[" #_asm_symbol_name_immed "];" \
96 "li 25, %[" #_asm_symbol_name_immed "];" \
97 "li 26, %[" #_asm_symbol_name_immed "];" \
98 "li 27, %[" #_asm_symbol_name_immed "];" \
99 "li 28, %[" #_asm_symbol_name_immed "];" \
100 "li 29, %[" #_asm_symbol_name_immed "];" \
101 "li 30, %[" #_asm_symbol_name_immed "];" \
102 "li 31, %[" #_asm_symbol_name_immed "];"
103
104#define ASM_LOAD_FPR_SINGLE_PRECISION(_asm_symbol_name_addr) \
105 "lfs 0, 0(%[" #_asm_symbol_name_addr "]);" \
106 "lfs 1, 0(%[" #_asm_symbol_name_addr "]);" \
107 "lfs 2, 0(%[" #_asm_symbol_name_addr "]);" \
108 "lfs 3, 0(%[" #_asm_symbol_name_addr "]);" \
109 "lfs 4, 0(%[" #_asm_symbol_name_addr "]);" \
110 "lfs 5, 0(%[" #_asm_symbol_name_addr "]);" \
111 "lfs 6, 0(%[" #_asm_symbol_name_addr "]);" \
112 "lfs 7, 0(%[" #_asm_symbol_name_addr "]);" \
113 "lfs 8, 0(%[" #_asm_symbol_name_addr "]);" \
114 "lfs 9, 0(%[" #_asm_symbol_name_addr "]);" \
115 "lfs 10, 0(%[" #_asm_symbol_name_addr "]);" \
116 "lfs 11, 0(%[" #_asm_symbol_name_addr "]);" \
117 "lfs 12, 0(%[" #_asm_symbol_name_addr "]);" \
118 "lfs 13, 0(%[" #_asm_symbol_name_addr "]);" \
119 "lfs 14, 0(%[" #_asm_symbol_name_addr "]);" \
120 "lfs 15, 0(%[" #_asm_symbol_name_addr "]);" \
121 "lfs 16, 0(%[" #_asm_symbol_name_addr "]);" \
122 "lfs 17, 0(%[" #_asm_symbol_name_addr "]);" \
123 "lfs 18, 0(%[" #_asm_symbol_name_addr "]);" \
124 "lfs 19, 0(%[" #_asm_symbol_name_addr "]);" \
125 "lfs 20, 0(%[" #_asm_symbol_name_addr "]);" \
126 "lfs 21, 0(%[" #_asm_symbol_name_addr "]);" \
127 "lfs 22, 0(%[" #_asm_symbol_name_addr "]);" \
128 "lfs 23, 0(%[" #_asm_symbol_name_addr "]);" \
129 "lfs 24, 0(%[" #_asm_symbol_name_addr "]);" \
130 "lfs 25, 0(%[" #_asm_symbol_name_addr "]);" \
131 "lfs 26, 0(%[" #_asm_symbol_name_addr "]);" \
132 "lfs 27, 0(%[" #_asm_symbol_name_addr "]);" \
133 "lfs 28, 0(%[" #_asm_symbol_name_addr "]);" \
134 "lfs 29, 0(%[" #_asm_symbol_name_addr "]);" \
135 "lfs 30, 0(%[" #_asm_symbol_name_addr "]);" \
136 "lfs 31, 0(%[" #_asm_symbol_name_addr "]);"
137
138#ifndef __ASSEMBLER__
139void store_gpr(unsigned long *addr);
140void load_gpr(unsigned long *addr);
141void load_fpr_single_precision(float *addr);
142void store_fpr_single_precision(float *addr);
143#endif /* end of __ASSEMBLER__ */
144
84#endif /* _SELFTESTS_POWERPC_REG_H */ 145#endif /* _SELFTESTS_POWERPC_REG_H */
diff --git a/tools/testing/selftests/powerpc/lib/reg.S b/tools/testing/selftests/powerpc/lib/reg.S
new file mode 100644
index 000000000000..b6aee2f79454
--- /dev/null
+++ b/tools/testing/selftests/powerpc/lib/reg.S
@@ -0,0 +1,132 @@
1/*
2 * test helper assembly functions
3 *
4 * Copyright (C) 2016 Simon Guo, IBM Corporation.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version
9 * 2 of the License, or (at your option) any later version.
10 */
11#include <ppc-asm.h>
12#include "reg.h"
13
14
15/* Non volatile GPR - unsigned long buf[18] */
16FUNC_START(load_gpr)
17 ld 14, 0*8(3)
18 ld 15, 1*8(3)
19 ld 16, 2*8(3)
20 ld 17, 3*8(3)
21 ld 18, 4*8(3)
22 ld 19, 5*8(3)
23 ld 20, 6*8(3)
24 ld 21, 7*8(3)
25 ld 22, 8*8(3)
26 ld 23, 9*8(3)
27 ld 24, 10*8(3)
28 ld 25, 11*8(3)
29 ld 26, 12*8(3)
30 ld 27, 13*8(3)
31 ld 28, 14*8(3)
32 ld 29, 15*8(3)
33 ld 30, 16*8(3)
34 ld 31, 17*8(3)
35 blr
36FUNC_END(load_gpr)
37
38FUNC_START(store_gpr)
39 std 14, 0*8(3)
40 std 15, 1*8(3)
41 std 16, 2*8(3)
42 std 17, 3*8(3)
43 std 18, 4*8(3)
44 std 19, 5*8(3)
45 std 20, 6*8(3)
46 std 21, 7*8(3)
47 std 22, 8*8(3)
48 std 23, 9*8(3)
49 std 24, 10*8(3)
50 std 25, 11*8(3)
51 std 26, 12*8(3)
52 std 27, 13*8(3)
53 std 28, 14*8(3)
54 std 29, 15*8(3)
55 std 30, 16*8(3)
56 std 31, 17*8(3)
57 blr
58FUNC_END(store_gpr)
59
60/* Single Precision Float - float buf[32] */
61FUNC_START(load_fpr_single_precision)
62 lfs 0, 0*4(3)
63 lfs 1, 1*4(3)
64 lfs 2, 2*4(3)
65 lfs 3, 3*4(3)
66 lfs 4, 4*4(3)
67 lfs 5, 5*4(3)
68 lfs 6, 6*4(3)
69 lfs 7, 7*4(3)
70 lfs 8, 8*4(3)
71 lfs 9, 9*4(3)
72 lfs 10, 10*4(3)
73 lfs 11, 11*4(3)
74 lfs 12, 12*4(3)
75 lfs 13, 13*4(3)
76 lfs 14, 14*4(3)
77 lfs 15, 15*4(3)
78 lfs 16, 16*4(3)
79 lfs 17, 17*4(3)
80 lfs 18, 18*4(3)
81 lfs 19, 19*4(3)
82 lfs 20, 20*4(3)
83 lfs 21, 21*4(3)
84 lfs 22, 22*4(3)
85 lfs 23, 23*4(3)
86 lfs 24, 24*4(3)
87 lfs 25, 25*4(3)
88 lfs 26, 26*4(3)
89 lfs 27, 27*4(3)
90 lfs 28, 28*4(3)
91 lfs 29, 29*4(3)
92 lfs 30, 30*4(3)
93 lfs 31, 31*4(3)
94 blr
95FUNC_END(load_fpr_single_precision)
96
97/* Single Precision Float - float buf[32] */
98FUNC_START(store_fpr_single_precision)
99 stfs 0, 0*4(3)
100 stfs 1, 1*4(3)
101 stfs 2, 2*4(3)
102 stfs 3, 3*4(3)
103 stfs 4, 4*4(3)
104 stfs 5, 5*4(3)
105 stfs 6, 6*4(3)
106 stfs 7, 7*4(3)