#include "hpm_common.h"Go to the source code of this file.
Macros | |
| #define | write_fcsr(v) __asm volatile("fscsr %0" : : "r"(v)) |
| write fp csr More... | |
| #define | clear_csr(csr_num, bit) __asm volatile("csrc %0, %1" : : "i"(csr_num), "r"(bit)) |
| clear bits in csr More... | |
| #define | read_clear_csr(csr_num, bit) ({ volatile uint32_t v = 0; __asm volatile("csrrc %0, %1, %2" : "=r"(v) : "i"(csr_num), "r"(bit)); v; }) |
| read and clear bits in csr More... | |
| #define | read_set_csr(csr_num, bit) ({ volatile uint32_t v = 0; __asm volatile("csrrs %0, %1, %2" : "=r"(v) : "i"(csr_num), "r"(bit)); v; }) |
| read and set bits in csr More... | |
| #define | set_csr(csr_num, bit) __asm volatile("csrs %0, %1" : : "i"(csr_num), "r"(bit)) |
| set bits in csr More... | |
| #define | write_csr(csr_num, v) __asm volatile("csrw %0, %1" : : "i"(csr_num), "r"(v)) |
| write value to csr More... | |
| #define | read_csr(csr_num) ({ uint32_t v; __asm volatile("csrr %0, %1" : "=r"(v) : "i"(csr_num)); v; }) |
| read value of specific csr More... | |
| #define | read_fcsr() ({ uint32_t v; __asm volatile("frcsr %0" : "=r"(v)); v; }) |
| read fp csr More... | |
| #define | fencei() __asm volatile("fence.i") |
| execute fence.i More... | |
| #define | fencerw() __asm volatile("fence rw, rw") |
| execute fence rw More... | |
| #define | fenceiorw() __asm volatile("fence iorw, iorw") |
| execute fence iorw More... | |
| #define | enable_fpu() read_set_csr(CSR_MSTATUS, CSR_MSTATUS_FS_MASK) |
| enable fpu More... | |
| #define | disable_fpu() read_clear_csr(CSR_MSTATUS, CSR_MSTATUS_FS_MASK) |
| disable fpu More... | |
| #define | clear_fcsr() write_fcsr(0) |
| clear fcsr More... | |
| #define clear_csr | ( | csr_num, | |
| bit | |||
| ) | __asm volatile("csrc %0, %1" : : "i"(csr_num), "r"(bit)) |
clear bits in csr
| csr_num | specific csr |
| bit | bits to be cleared |
| #define clear_fcsr | ( | ) | write_fcsr(0) |
clear fcsr
| #define disable_fpu | ( | ) | read_clear_csr(CSR_MSTATUS, CSR_MSTATUS_FS_MASK) |
disable fpu
| #define enable_fpu | ( | ) | read_set_csr(CSR_MSTATUS, CSR_MSTATUS_FS_MASK) |
enable fpu
| #define fencei | ( | ) | __asm volatile("fence.i") |
execute fence.i
| #define fenceiorw | ( | ) | __asm volatile("fence iorw, iorw") |
execute fence iorw
| #define fencerw | ( | ) | __asm volatile("fence rw, rw") |
execute fence rw
| #define read_clear_csr | ( | csr_num, | |
| bit | |||
| ) | ({ volatile uint32_t v = 0; __asm volatile("csrrc %0, %1, %2" : "=r"(v) : "i"(csr_num), "r"(bit)); v; }) |
read and clear bits in csr
| csr_num | specific csr |
| bit | bits to be cleared |
| #define read_csr | ( | csr_num | ) | ({ uint32_t v; __asm volatile("csrr %0, %1" : "=r"(v) : "i"(csr_num)); v; }) |
read value of specific csr
| csr_num | specific csr |
| #define read_fcsr | ( | ) | ({ uint32_t v; __asm volatile("frcsr %0" : "=r"(v)); v; }) |
read fp csr
| #define read_set_csr | ( | csr_num, | |
| bit | |||
| ) | ({ volatile uint32_t v = 0; __asm volatile("csrrs %0, %1, %2" : "=r"(v) : "i"(csr_num), "r"(bit)); v; }) |
read and set bits in csr
| csr_num | specific csr |
| bit | bits to be set |
| #define set_csr | ( | csr_num, | |
| bit | |||
| ) | __asm volatile("csrs %0, %1" : : "i"(csr_num), "r"(bit)) |
set bits in csr
| csr_num | specific csr |
| bit | bits to be set |
| #define write_csr | ( | csr_num, | |
| v | |||
| ) | __asm volatile("csrw %0, %1" : : "i"(csr_num), "r"(v)) |
write value to csr
| csr_num | specific csr |
| v | value to be written |
| #define write_fcsr | ( | v | ) | __asm volatile("fscsr %0" : : "r"(v)) |
write fp csr
| v | value to be set |