mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-25 07:41:42 +01:00
include: sbi_scratch: Add helper macros to access data type
Reading and writing a data type in scratch space is a very common use-case so let us add related helper macros in sbi_scratch.h. Signed-off-by: Anup Patel <apatel@ventanamicro.com>
This commit is contained in:
@@ -174,6 +174,23 @@ void sbi_scratch_free_offset(unsigned long offset);
|
|||||||
#define sbi_scratch_thishart_offset_ptr(offset) \
|
#define sbi_scratch_thishart_offset_ptr(offset) \
|
||||||
(void *)((char *)sbi_scratch_thishart_ptr() + (offset))
|
(void *)((char *)sbi_scratch_thishart_ptr() + (offset))
|
||||||
|
|
||||||
|
/** Allocate offset for a data type in sbi_scratch */
|
||||||
|
#define sbi_scratch_alloc_type_offset(__type) \
|
||||||
|
sbi_scratch_alloc_offset(sizeof(__type))
|
||||||
|
|
||||||
|
/** Read a data type from sbi_scratch at given offset */
|
||||||
|
#define sbi_scratch_read_type(__scratch, __type, __offset) \
|
||||||
|
({ \
|
||||||
|
*((__type *)sbi_scratch_offset_ptr((__scratch), (__offset))); \
|
||||||
|
})
|
||||||
|
|
||||||
|
/** Write a data type to sbi_scratch at given offset */
|
||||||
|
#define sbi_scratch_write_type(__scratch, __type, __offset, __ptr) \
|
||||||
|
do { \
|
||||||
|
*((__type *)sbi_scratch_offset_ptr((__scratch), (__offset))) \
|
||||||
|
= (__type)(__ptr); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/** HART id to scratch table */
|
/** HART id to scratch table */
|
||||||
extern struct sbi_scratch *hartid_to_scratch_table[];
|
extern struct sbi_scratch *hartid_to_scratch_table[];
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user