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