diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-02-25 21:11:00 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-02-26 07:40:17 +0100 |
commit | a286d28695d312971400c6b25f43d0794f5e9be8 (patch) | |
tree | 169e5471bced96e5504fe597316bba4b4a776af6 /bsps/powerpc/include/libcpu/spr.h | |
parent | riscv: Use zicsr architecture extension (diff) | |
download | rtems-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.h | 18 |
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; } |