]>
Commit | Line | Data |
---|---|---|
2874c5fd | 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
58e0166a JB |
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> | |
58e0166a JB |
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 |