root/arch/openrisc/include/asm/spr.h

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

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. mfspr
  2. mfspr_off

   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * OpenRISC Linux
   4  *
   5  * Linux architectural port borrowing liberally from similar works of
   6  * others.  All original copyrights apply as per the original source
   7  * declaration.
   8  *
   9  * OpenRISC implementation:
  10  * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  11  */
  12 
  13 #ifndef __ASM_OPENRISC_SPR_H
  14 #define __ASM_OPENRISC_SPR_H
  15 
  16 #define mtspr(_spr, _val) __asm__ __volatile__ (                \
  17         "l.mtspr r0,%1,%0"                                      \
  18         : : "K" (_spr), "r" (_val))
  19 #define mtspr_off(_spr, _off, _val) __asm__ __volatile__ (      \
  20         "l.mtspr %0,%1,%2"                                      \
  21         : : "r" (_off), "r" (_val), "K" (_spr))
  22 
  23 static inline unsigned long mfspr(unsigned long add)
  24 {
  25         unsigned long ret;
  26         __asm__ __volatile__ ("l.mfspr %0,r0,%1" : "=r" (ret) : "K" (add));
  27         return ret;
  28 }
  29 
  30 static inline unsigned long mfspr_off(unsigned long add, unsigned long offset)
  31 {
  32         unsigned long ret;
  33         __asm__ __volatile__ ("l.mfspr %0,%1,%2" : "=r" (ret)
  34                                                  : "r" (offset), "K" (add));
  35         return ret;
  36 }
  37 
  38 #endif

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