summaryrefslogtreecommitdiffstats
path: root/bsps/powerpc/include/libcpu/spr.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2022-02-25 21:11:00 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-02-26 07:40:17 +0100
commita286d28695d312971400c6b25f43d0794f5e9be8 (patch)
tree169e5471bced96e5504fe597316bba4b4a776af6 /bsps/powerpc/include/libcpu/spr.h
parentriscv: Use zicsr architecture extension (diff)
downloadrtems-a286d28695d312971400c6b25f43d0794f5e9be8.tar.bz2
powerpc: Use .machine any for some inline asm
Diffstat (limited to 'bsps/powerpc/include/libcpu/spr.h')
-rw-r--r--bsps/powerpc/include/libcpu/spr.h18
1 files changed, 16 insertions, 2 deletions
diff --git a/bsps/powerpc/include/libcpu/spr.h b/bsps/powerpc/include/libcpu/spr.h
index 6c81d0ee91..dea0cde63c 100644
--- a/bsps/powerpc/include/libcpu/spr.h
+++ b/bsps/powerpc/include/libcpu/spr.h
@@ -64,13 +64,27 @@ static inline void _write_MSR(unsigned long val)
static inline unsigned long _read_SR(void * va)
{
unsigned long val;
- asm volatile("mfsrin %0,%1" : "=r" (val): "r" (va));
+ asm volatile (
+ ".machine \"push\"\n"
+ ".machine \"any\"\n"
+ "mfsrin %0,%1\n"
+ ".machine \"pop\"" :
+ "=r" (val) :
+ "r" (va)
+ );
return val;
}
static inline void _write_SR(unsigned long val, void * va)
{
- asm volatile("mtsrin %0,%1" : : "r"(val), "r" (va): "memory");
+ asm volatile (
+ ".machine \"push\"\n"
+ ".machine \"any\"\n"
+ "mtsrin %0,%1\n"
+ ".machine \"pop\"" : :
+ "r" (val) , "r" (va) :
+ "memory"
+ );
return;
}