xref: /linux/tools/testing/selftests/powerpc/pmu/ebb/reg_access_test.c (revision 26fbb4c8c7c3ee9a4c3b4de555a8587b5a19154e)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * Copyright 2014, Michael Ellerman, IBM Corp.
4  */
5 
6 #include <stdio.h>
7 #include <stdlib.h>
8 
9 #include "ebb.h"
10 
11 
12 /*
13  * Test basic access to the EBB regs, they should be user accessible with no
14  * kernel interaction required.
15  */
16 int reg_access(void)
17 {
18 	uint64_t val, expected;
19 
20 	SKIP_IF(!ebb_is_supported());
21 
22 	expected = 0x8000000100000000ull;
23 	mtspr(SPRN_BESCR, expected);
24 	val = mfspr(SPRN_BESCR);
25 
26 	FAIL_IF(val != expected);
27 
28 	expected = 0x0000000001000000ull;
29 	mtspr(SPRN_EBBHR, expected);
30 	val = mfspr(SPRN_EBBHR);
31 
32 	FAIL_IF(val != expected);
33 
34 	return 0;
35 }
36 
37 int main(void)
38 {
39 	return test_harness(reg_access, "reg_access");
40 }
41