]>
Commit | Line | Data |
---|---|---|
2874c5fd | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
73760931 AK |
2 | /* |
3 | * Basic assembly code to read BHRB entries | |
4 | * | |
5 | * Copyright 2013 Anshuman Khandual, IBM Corporation. | |
73760931 AK |
6 | */ |
7 | #include <asm/ppc_asm.h> | |
8 | #include <asm/ppc-opcode.h> | |
9 | ||
10 | .text | |
11 | ||
12 | .balign 8 | |
13 | ||
14 | /* r3 = n (where n = [0-31]) | |
15 | * The maximum number of BHRB entries supported with PPC_MFBHRBE instruction | |
16 | * is 1024. We have limited number of table entries here as POWER8 implements | |
17 | * 32 BHRB entries. | |
18 | */ | |
19 | ||
20 | /* .global read_bhrb */ | |
21 | _GLOBAL(read_bhrb) | |
22 | cmpldi r3,31 | |
23 | bgt 1f | |
24 | ld r4,bhrb_table@got(r2) | |
25 | sldi r3,r3,3 | |
26 | add r3,r4,r3 | |
27 | mtctr r3 | |
28 | bctr | |
29 | 1: li r3,0 | |
30 | blr | |
31 | ||
32 | #define MFBHRB_TABLE1(n) PPC_MFBHRBE(R3,n); blr | |
33 | #define MFBHRB_TABLE2(n) MFBHRB_TABLE1(n); MFBHRB_TABLE1(n+1) | |
34 | #define MFBHRB_TABLE4(n) MFBHRB_TABLE2(n); MFBHRB_TABLE2(n+2) | |
35 | #define MFBHRB_TABLE8(n) MFBHRB_TABLE4(n); MFBHRB_TABLE4(n+4) | |
36 | #define MFBHRB_TABLE16(n) MFBHRB_TABLE8(n); MFBHRB_TABLE8(n+8) | |
37 | #define MFBHRB_TABLE32(n) MFBHRB_TABLE16(n); MFBHRB_TABLE16(n+16) | |
38 | ||
39 | bhrb_table: | |
40 | MFBHRB_TABLE32(0) |