summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/powerpc/lib/reg.S
blob: b6aee2f79454b80ec0bff14726fdefa110a798b7 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
 * test helper assembly functions
 *
 * Copyright (C) 2016 Simon Guo, IBM Corporation.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version
 * 2 of the License, or (at your option) any later version.
 */
#include <ppc-asm.h>
#include "reg.h"


/* Non volatile GPR - unsigned long buf[18] */
FUNC_START(load_gpr)
	ld	14, 0*8(3)
	ld	15, 1*8(3)
	ld	16, 2*8(3)
	ld	17, 3*8(3)
	ld	18, 4*8(3)
	ld	19, 5*8(3)
	ld	20, 6*8(3)
	ld	21, 7*8(3)
	ld	22, 8*8(3)
	ld	23, 9*8(3)
	ld	24, 10*8(3)
	ld	25, 11*8(3)
	ld	26, 12*8(3)
	ld	27, 13*8(3)
	ld	28, 14*8(3)
	ld	29, 15*8(3)
	ld	30, 16*8(3)
	ld	31, 17*8(3)
	blr
FUNC_END(load_gpr)

FUNC_START(store_gpr)
	std	14, 0*8(3)
	std	15, 1*8(3)
	std	16, 2*8(3)
	std	17, 3*8(3)
	std	18, 4*8(3)
	std	19, 5*8(3)
	std	20, 6*8(3)
	std	21, 7*8(3)
	std	22, 8*8(3)
	std	23, 9*8(3)
	std	24, 10*8(3)
	std	25, 11*8(3)
	std	26, 12*8(3)
	std	27, 13*8(3)
	std	28, 14*8(3)
	std	29, 15*8(3)
	std	30, 16*8(3)
	std	31, 17*8(3)
	blr
FUNC_END(store_gpr)

/* Single Precision Float - float buf[32] */
FUNC_START(load_fpr_single_precision)
	lfs 0, 0*4(3)
	lfs 1, 1*4(3)
	lfs 2, 2*4(3)
	lfs 3, 3*4(3)
	lfs 4, 4*4(3)
	lfs 5, 5*4(3)
	lfs 6, 6*4(3)
	lfs 7, 7*4(3)
	lfs 8, 8*4(3)
	lfs 9, 9*4(3)
	lfs 10, 10*4(3)
	lfs 11, 11*4(3)
	lfs 12, 12*4(3)
	lfs 13, 13*4(3)
	lfs 14, 14*4(3)
	lfs 15, 15*4(3)
	lfs 16, 16*4(3)
	lfs 17, 17*4(3)
	lfs 18, 18*4(3)
	lfs 19, 19*4(3)
	lfs 20, 20*4(3)
	lfs 21, 21*4(3)
	lfs 22, 22*4(3)
	lfs 23, 23*4(3)
	lfs 24, 24*4(3)
	lfs 25, 25*4(3)
	lfs 26, 26*4(3)
	lfs 27, 27*4(3)
	lfs 28, 28*4(3)
	lfs 29, 29*4(3)
	lfs 30, 30*4(3)
	lfs 31, 31*4(3)
	blr
FUNC_END(load_fpr_single_precision)

/* Single Precision Float - float buf[32] */
FUNC_START(store_fpr_single_precision)
	stfs 0, 0*4(3)
	stfs 1, 1*4(3)
	stfs 2, 2*4(3)
	stfs 3, 3*4(3)
	stfs 4, 4*4(3)
	stfs 5, 5*4(3)
	stfs 6, 6*4(3)
	stfs 7, 7*4(3)
	stfs 8, 8*4(3)
	stfs 9, 9*4(3)
	stfs 10, 10*4(3)
	stfs 11, 11*4(3)
	stfs 12, 12*4(3)
	stfs 13, 13*4(3)
	stfs 14, 14*4(3)
	stfs 15, 15*4(3)
	stfs 16, 16*4(3)
	stfs 17, 17*4(3)
	stfs 18, 18*4(3)
	stfs 19, 19*4(3)
	stfs 20, 20*4(3)
	stfs 21, 21*4(3)
	stfs 22, 22*4(3)
	stfs 23, 23*4(3)
	stfs 24, 24*4(3)
	stfs 25, 25*4(3)
	stfs 26, 26*4(3)
	stfs 27, 27*4(3)
	stfs 28, 28*4(3)
	stfs 29, 29*4(3)
	stfs 30, 30*4(3)
	stfs 31, 31*4(3)
	blr
FUNC_END(store_fpr_single_precision)