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 331: 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 43bhrb_table: 44 MFBHRB_TABLE32(0) 45