14c75a6f4SBenjamin Herrenschmidt/* 24c75a6f4SBenjamin Herrenschmidt * "Indirect" DCR access 34c75a6f4SBenjamin Herrenschmidt * 44c75a6f4SBenjamin Herrenschmidt * Copyright (c) 2004 Eugene Surovegin <ebs@ebshome.net> 54c75a6f4SBenjamin Herrenschmidt * 64c75a6f4SBenjamin Herrenschmidt * This program is free software; you can redistribute it and/or modify it 74c75a6f4SBenjamin Herrenschmidt * under the terms of the GNU General Public License as published by the 84c75a6f4SBenjamin Herrenschmidt * Free Software Foundation; either version 2 of the License, or (at your 94c75a6f4SBenjamin Herrenschmidt * option) any later version. 104c75a6f4SBenjamin Herrenschmidt */ 114c75a6f4SBenjamin Herrenschmidt 124c75a6f4SBenjamin Herrenschmidt#include <asm/ppc_asm.h> 134c75a6f4SBenjamin Herrenschmidt#include <asm/processor.h> 146d2170beSBenjamin Herrenschmidt#include <asm/bug.h> 159445aa1aSAl Viro#include <asm/export.h> 164c75a6f4SBenjamin Herrenschmidt 174c75a6f4SBenjamin Herrenschmidt#define DCR_ACCESS_PROLOG(table) \ 186d2170beSBenjamin Herrenschmidt cmpli cr0,r3,1024; \ 194c75a6f4SBenjamin Herrenschmidt rlwinm r3,r3,4,18,27; \ 204c75a6f4SBenjamin Herrenschmidt lis r5,table@h; \ 214c75a6f4SBenjamin Herrenschmidt ori r5,r5,table@l; \ 224c75a6f4SBenjamin Herrenschmidt add r3,r3,r5; \ 236d2170beSBenjamin Herrenschmidt bge- 1f; \ 244c75a6f4SBenjamin Herrenschmidt mtctr r3; \ 256d2170beSBenjamin Herrenschmidt bctr; \ 266d2170beSBenjamin Herrenschmidt1: trap; \ 276d2170beSBenjamin Herrenschmidt EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0; \ 286d2170beSBenjamin Herrenschmidt blr 294c75a6f4SBenjamin Herrenschmidt 304c75a6f4SBenjamin Herrenschmidt_GLOBAL(__mfdcr) 314c75a6f4SBenjamin Herrenschmidt DCR_ACCESS_PROLOG(__mfdcr_table) 329445aa1aSAl ViroEXPORT_SYMBOL(__mfdcr) 334c75a6f4SBenjamin Herrenschmidt 344c75a6f4SBenjamin Herrenschmidt_GLOBAL(__mtdcr) 354c75a6f4SBenjamin Herrenschmidt DCR_ACCESS_PROLOG(__mtdcr_table) 369445aa1aSAl ViroEXPORT_SYMBOL(__mtdcr) 374c75a6f4SBenjamin Herrenschmidt 384c75a6f4SBenjamin Herrenschmidt__mfdcr_table: 394c75a6f4SBenjamin Herrenschmidt mfdcr r3,0; blr 404c75a6f4SBenjamin Herrenschmidt__mtdcr_table: 414c75a6f4SBenjamin Herrenschmidt mtdcr 0,r4; blr 424c75a6f4SBenjamin Herrenschmidt 434c75a6f4SBenjamin Herrenschmidtdcr = 1 444c75a6f4SBenjamin Herrenschmidt .rept 1023 454c75a6f4SBenjamin Herrenschmidt mfdcr r3,dcr; blr 464c75a6f4SBenjamin Herrenschmidt mtdcr dcr,r4; blr 474c75a6f4SBenjamin Herrenschmidt dcr = dcr + 1 484c75a6f4SBenjamin Herrenschmidt .endr 49