/* SPDX-License-Identifier: GPL-2.0-or-later */1/*2* "Indirect" DCR access3*4* Copyright (c) 2004 Eugene Surovegin <[email protected]>5*/67#include <linux/export.h>8#include <asm/ppc_asm.h>9#include <asm/processor.h>10#include <asm/bug.h>1112#define DCR_ACCESS_PROLOG(table) \13cmplwi cr0,r3,1024; \14rlwinm r3,r3,4,18,27; \15lis r5,table@h; \16ori r5,r5,table@l; \17add r3,r3,r5; \18bge- 1f; \19mtctr r3; \20bctr; \211: trap; \22EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0; \23blr2425_GLOBAL(__mfdcr)26DCR_ACCESS_PROLOG(__mfdcr_table)27EXPORT_SYMBOL(__mfdcr)2829_GLOBAL(__mtdcr)30DCR_ACCESS_PROLOG(__mtdcr_table)31EXPORT_SYMBOL(__mtdcr)3233__mfdcr_table:34mfdcr r3,0; blr35__mtdcr_table:36mtdcr 0,r4; blr3738dcr = 139.rept 102340mfdcr r3,dcr; blr41mtdcr dcr,r4; blr42dcr = dcr + 143.endr444546