Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/powerpc/sysdev/dcr-low.S
26444 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
/*
3
* "Indirect" DCR access
4
*
5
* Copyright (c) 2004 Eugene Surovegin <[email protected]>
6
*/
7
8
#include <linux/export.h>
9
#include <asm/ppc_asm.h>
10
#include <asm/processor.h>
11
#include <asm/bug.h>
12
13
#define DCR_ACCESS_PROLOG(table) \
14
cmplwi cr0,r3,1024; \
15
rlwinm r3,r3,4,18,27; \
16
lis r5,table@h; \
17
ori r5,r5,table@l; \
18
add r3,r3,r5; \
19
bge- 1f; \
20
mtctr r3; \
21
bctr; \
22
1: trap; \
23
EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0; \
24
blr
25
26
_GLOBAL(__mfdcr)
27
DCR_ACCESS_PROLOG(__mfdcr_table)
28
EXPORT_SYMBOL(__mfdcr)
29
30
_GLOBAL(__mtdcr)
31
DCR_ACCESS_PROLOG(__mtdcr_table)
32
EXPORT_SYMBOL(__mtdcr)
33
34
__mfdcr_table:
35
mfdcr r3,0; blr
36
__mtdcr_table:
37
mtdcr 0,r4; blr
38
39
dcr = 1
40
.rept 1023
41
mfdcr r3,dcr; blr
42
mtdcr dcr,r4; blr
43
dcr = dcr + 1
44
.endr
45
46