xref: /openbmc/linux/arch/powerpc/sysdev/dcr-low.S (revision 9445aa1a)
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