mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
4c75a6f441
This patch adds new dcr_map/dcr_read/dcr_write accessors for DCRs that can be used by drivers to transparently address either native DCRs or memory mapped DCRs. The implementation for memory mapped DCRs is done after the binding being currently worked on for SLOF and the Axon chipset. This patch enables it for the cell native platform Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
40 lines
858 B
ArmAsm
40 lines
858 B
ArmAsm
/*
|
|
* "Indirect" DCR access
|
|
*
|
|
* Copyright (c) 2004 Eugene Surovegin <ebs@ebshome.net>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation; either version 2 of the License, or (at your
|
|
* option) any later version.
|
|
*/
|
|
|
|
#include <asm/ppc_asm.h>
|
|
#include <asm/processor.h>
|
|
|
|
#define DCR_ACCESS_PROLOG(table) \
|
|
rlwinm r3,r3,4,18,27; \
|
|
lis r5,table@h; \
|
|
ori r5,r5,table@l; \
|
|
add r3,r3,r5; \
|
|
mtctr r3; \
|
|
bctr
|
|
|
|
_GLOBAL(__mfdcr)
|
|
DCR_ACCESS_PROLOG(__mfdcr_table)
|
|
|
|
_GLOBAL(__mtdcr)
|
|
DCR_ACCESS_PROLOG(__mtdcr_table)
|
|
|
|
__mfdcr_table:
|
|
mfdcr r3,0; blr
|
|
__mtdcr_table:
|
|
mtdcr 0,r4; blr
|
|
|
|
dcr = 1
|
|
.rept 1023
|
|
mfdcr r3,dcr; blr
|
|
mtdcr dcr,r4; blr
|
|
dcr = dcr + 1
|
|
.endr
|