xref: /linux/tools/testing/selftests/powerpc/ptrace/ptrace-gpr.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
2f666ad41SAnshuman Khandual /*
3f666ad41SAnshuman Khandual  * Copyright (C) 2015 Anshuman Khandual, IBM Corporation.
4f666ad41SAnshuman Khandual  */
5f666ad41SAnshuman Khandual #define GPR_1	1
6f666ad41SAnshuman Khandual #define GPR_2	2
7f666ad41SAnshuman Khandual #define GPR_3	3
8f666ad41SAnshuman Khandual #define GPR_4	4
9f666ad41SAnshuman Khandual 
10f666ad41SAnshuman Khandual #define FPR_1	0.001
11f666ad41SAnshuman Khandual #define FPR_2	0.002
12f666ad41SAnshuman Khandual #define FPR_3	0.003
13f666ad41SAnshuman Khandual #define FPR_4	0.004
14f666ad41SAnshuman Khandual 
15*53fa86e7SMichael Ellerman #define FPR_1_REP 0x3f50624dd2f1a9fcull
16*53fa86e7SMichael Ellerman #define FPR_2_REP 0x3f60624dd2f1a9fcull
17*53fa86e7SMichael Ellerman #define FPR_3_REP 0x3f689374bc6a7efaull
18*53fa86e7SMichael Ellerman #define FPR_4_REP 0x3f70624dd2f1a9fcull
19f666ad41SAnshuman Khandual 
20f666ad41SAnshuman Khandual /* Buffer must have 18 elements */
validate_gpr(unsigned long * gpr,unsigned long val)21f666ad41SAnshuman Khandual int validate_gpr(unsigned long *gpr, unsigned long val)
22f666ad41SAnshuman Khandual {
23f666ad41SAnshuman Khandual 	int i, found = 1;
24f666ad41SAnshuman Khandual 
25f666ad41SAnshuman Khandual 	for (i = 0; i < 18; i++) {
26f666ad41SAnshuman Khandual 		if (gpr[i] != val) {
27f666ad41SAnshuman Khandual 			printf("GPR[%d]: %lx Expected: %lx\n",
28f666ad41SAnshuman Khandual 				i+14, gpr[i], val);
29f666ad41SAnshuman Khandual 			found = 0;
30f666ad41SAnshuman Khandual 		}
31f666ad41SAnshuman Khandual 	}
32f666ad41SAnshuman Khandual 
33f666ad41SAnshuman Khandual 	if (!found)
34f666ad41SAnshuman Khandual 		return TEST_FAIL;
35f666ad41SAnshuman Khandual 	return TEST_PASS;
36f666ad41SAnshuman Khandual }
37f666ad41SAnshuman Khandual 
38f666ad41SAnshuman Khandual /* Buffer must have 32 elements */
validate_fpr(__u64 * fpr,__u64 val)39*53fa86e7SMichael Ellerman int validate_fpr(__u64 *fpr, __u64 val)
40f666ad41SAnshuman Khandual {
41f666ad41SAnshuman Khandual 	int i, found = 1;
42f666ad41SAnshuman Khandual 
43f666ad41SAnshuman Khandual 	for (i = 0; i < 32; i++) {
44f666ad41SAnshuman Khandual 		if (fpr[i] != val) {
45*53fa86e7SMichael Ellerman 			printf("FPR[%d]: %llx Expected: %llx\n", i, fpr[i], val);
46f666ad41SAnshuman Khandual 			found = 0;
47f666ad41SAnshuman Khandual 		}
48f666ad41SAnshuman Khandual 	}
49f666ad41SAnshuman Khandual 
50f666ad41SAnshuman Khandual 	if (!found)
51f666ad41SAnshuman Khandual 		return TEST_FAIL;
52f666ad41SAnshuman Khandual 	return TEST_PASS;
53f666ad41SAnshuman Khandual }
54f666ad41SAnshuman Khandual 
55f666ad41SAnshuman Khandual /* Buffer must have 32 elements */
validate_fpr_double(double * fpr,double val)56*53fa86e7SMichael Ellerman int validate_fpr_double(double *fpr, double val)
57f666ad41SAnshuman Khandual {
58f666ad41SAnshuman Khandual 	int i, found = 1;
59f666ad41SAnshuman Khandual 
60f666ad41SAnshuman Khandual 	for (i = 0; i < 32; i++) {
61f666ad41SAnshuman Khandual 		if (fpr[i] != val) {
62f666ad41SAnshuman Khandual 			printf("FPR[%d]: %f Expected: %f\n", i, fpr[i], val);
63f666ad41SAnshuman Khandual 			found = 0;
64f666ad41SAnshuman Khandual 		}
65f666ad41SAnshuman Khandual 	}
66f666ad41SAnshuman Khandual 
67f666ad41SAnshuman Khandual 	if (!found)
68f666ad41SAnshuman Khandual 		return TEST_FAIL;
69f666ad41SAnshuman Khandual 	return TEST_PASS;
70f666ad41SAnshuman Khandual }
71