550W Document
550W, a high-end OS
sbi.h 文件参考
#include <asm/sbidef.h>
#include <common/types.h>
sbi.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define SBI_CALL(which, arg0, arg1, arg2)
 
#define SBI_CALL_0(which)   SBI_CALL(which, 0, 0, 0)
 
#define SBI_CALL_1(which, arg0)   SBI_CALL(which, arg0, 0, 0)
 
#define SBI_CALL_2(which, arg0, arg1)   SBI_CALL(which, arg0, arg1, 0)
 
#define SBI_CALL_3(which, arg0, arg1, arg2)   SBI_CALL(which, arg0, arg1, arg2)
 

宏定义说明

◆ SBI_CALL

#define SBI_CALL (   which,
  arg0,
  arg1,
  arg2 
)
值:
({ \
register uintptr_t a0 asm("a0") = (uintptr_t)(arg0); \
register uintptr_t a1 asm("a1") = (uintptr_t)(arg1); \
register uintptr_t a2 asm("a2") = (uintptr_t)(arg2); \
register uintptr_t a6 asm("a6") = (uintptr_t)(0); \
register uintptr_t a7 asm("a7") = (uintptr_t)(which); \
asm volatile("ecall" \
: "+r"(a0) \
: "r"(a1), "r"(a2), "r"(a6), "r"(a7) \
: "memory"); \
a0; \
})
macro SBI_CALL which li a7
Definition: sbiasm.h:5
uint64 uintptr_t
Definition: types.h:47

◆ SBI_CALL_0

#define SBI_CALL_0 (   which)    SBI_CALL(which, 0, 0, 0)

◆ SBI_CALL_1

#define SBI_CALL_1 (   which,
  arg0 
)    SBI_CALL(which, arg0, 0, 0)

◆ SBI_CALL_2

#define SBI_CALL_2 (   which,
  arg0,
  arg1 
)    SBI_CALL(which, arg0, arg1, 0)

◆ SBI_CALL_3

#define SBI_CALL_3 (   which,
  arg0,
  arg1,
  arg2 
)    SBI_CALL(which, arg0, arg1, arg2)