]>
Commit | Line | Data |
---|---|---|
58e0166a JB |
1 | /* |
2 | * OpenRISC Linux | |
3 | * | |
4 | * Linux architectural port borrowing liberally from similar works of | |
5 | * others. All original copyrights apply as per the original source | |
6 | * declaration. | |
7 | * | |
8 | * OpenRISC implementation: | |
9 | * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> | |
10 | * | |
11 | * This program is free software; you can redistribute it and/or modify | |
12 | * it under the terms of the GNU General Public License as published by | |
13 | * the Free Software Foundation; either version 2 of the License, or | |
14 | * (at your option) any later version. | |
15 | */ | |
16 | ||
17 | #ifndef __ASM_OPENRISC_SPR_H | |
18 | #define __ASM_OPENRISC_SPR_H | |
19 | ||
20 | #define mtspr(_spr, _val) __asm__ __volatile__ ( \ | |
21 | "l.mtspr r0,%1,%0" \ | |
22 | : : "K" (_spr), "r" (_val)) | |
23 | #define mtspr_off(_spr, _off, _val) __asm__ __volatile__ ( \ | |
24 | "l.mtspr %0,%1,%2" \ | |
25 | : : "r" (_off), "r" (_val), "K" (_spr)) | |
26 | ||
27 | static inline unsigned long mfspr(unsigned long add) | |
28 | { | |
29 | unsigned long ret; | |
30 | __asm__ __volatile__ ("l.mfspr %0,r0,%1" : "=r" (ret) : "K" (add)); | |
31 | return ret; | |
32 | } | |
33 | ||
34 | static inline unsigned long mfspr_off(unsigned long add, unsigned long offset) | |
35 | { | |
36 | unsigned long ret; | |
37 | __asm__ __volatile__ ("l.mfspr %0,%1,%2" : "=r" (ret) | |
38 | : "r" (offset), "K" (add)); | |
39 | return ret; | |
40 | } | |
41 | ||
42 | #endif |