root/arch/powerpc/sysdev/dcr-low.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * "Indirect" DCR access
   4  *
   5  * Copyright (c) 2004 Eugene Surovegin <ebs@ebshome.net>
   6  */
   7 
   8 #include <asm/ppc_asm.h>
   9 #include <asm/processor.h>
  10 #include <asm/bug.h>
  11 #include <asm/export.h>
  12 
  13 #define DCR_ACCESS_PROLOG(table) \
  14         cmpli   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

/* [<][>][^][v][top][bottom][index][help] */