Merge tag 'selinux-pr-20190726' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-block.git] / arch / powerpc / sysdev / dcr-low.S
CommitLineData
2874c5fd 1/* SPDX-License-Identifier: GPL-2.0-or-later */
4c75a6f4
BH
2/*
3 * "Indirect" DCR access
4 *
5 * Copyright (c) 2004 Eugene Surovegin <ebs@ebshome.net>
4c75a6f4
BH
6 */
7
8#include <asm/ppc_asm.h>
9#include <asm/processor.h>
6d2170be 10#include <asm/bug.h>
9445aa1a 11#include <asm/export.h>
4c75a6f4
BH
12
13#define DCR_ACCESS_PROLOG(table) \
6d2170be 14 cmpli cr0,r3,1024; \
4c75a6f4
BH
15 rlwinm r3,r3,4,18,27; \
16 lis r5,table@h; \
17 ori r5,r5,table@l; \
18 add r3,r3,r5; \
6d2170be 19 bge- 1f; \
4c75a6f4 20 mtctr r3; \
6d2170be
BH
21 bctr; \
221: trap; \
23 EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,0; \
24 blr
4c75a6f4
BH
25
26_GLOBAL(__mfdcr)
27 DCR_ACCESS_PROLOG(__mfdcr_table)
9445aa1a 28EXPORT_SYMBOL(__mfdcr)
4c75a6f4
BH
29
30_GLOBAL(__mtdcr)
31 DCR_ACCESS_PROLOG(__mtdcr_table)
9445aa1a 32EXPORT_SYMBOL(__mtdcr)
4c75a6f4
BH
33
34__mfdcr_table:
35 mfdcr r3,0; blr
36__mtdcr_table:
37 mtdcr 0,r4; blr
38
39dcr = 1
40 .rept 1023
41 mfdcr r3,dcr; blr
42 mtdcr dcr,r4; blr
43 dcr = dcr + 1
44 .endr