Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/powerpc/sysdev/dcr-low.S
10817 views
1
/*
2
* "Indirect" DCR access
3
*
4
* Copyright (c) 2004 Eugene Surovegin <[email protected]>
5
*
6
* This program is free software; you can redistribute it and/or modify it
7
* under the terms of the GNU General Public License as published by the
8
* Free Software Foundation; either version 2 of the License, or (at your
9
* option) any later version.
10
*/
11
12
#include <asm/ppc_asm.h>
13
#include <asm/processor.h>
14
#include <asm/bug.h>
15
16
#define DCR_ACCESS_PROLOG(table) \
17
cmpli cr0,r3,1024; \
18
rlwinm r3,r3,4,18,27; \
19
lis r5,table@h; \
20
ori r5,r5,table@l; \
21
add r3,r3,r5; \
22
bge- 1f; \
23
mtctr r3; \
24
bctr; \
25
1: trap; \
26
EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0; \
27
blr
28
29
_GLOBAL(__mfdcr)
30
DCR_ACCESS_PROLOG(__mfdcr_table)
31
32
_GLOBAL(__mtdcr)
33
DCR_ACCESS_PROLOG(__mtdcr_table)
34
35
__mfdcr_table:
36
mfdcr r3,0; blr
37
__mtdcr_table:
38
mtdcr 0,r4; blr
39
40
dcr = 1
41
.rept 1023
42
mfdcr r3,dcr; blr
43
mtdcr dcr,r4; blr
44
dcr = dcr + 1
45
.endr
46
47