SBI
riscv 的 sbi 是个标准 , 且 SBI 是 riscv独有的东西,其他架构没有这个概念
实现有很多种
opensbi 和 rustsbi
这些实现都跑在M-mode
这些实现都为运行在 S-mode 上的软件(例如linux) 提供 服务
例如
架构不支持指令 翻译
串口打印
虚拟化
原来 kvm 也是 sbi的一样,看来如果 linux中的kvm除了要支持虚拟化
也要支持sbi中的所有规范了
也就是说linux 内核及其app要占领 M-mode(KVM) S-mode(Linux) U-mode(APP)
安全支持
SBI 的作用
sbi 在启动过程中的作用
sbi在运行时的作用
SBI 的实现有哪些

ABI
调用约定,类型表示和名称修饰这三者的统称,
即是总所周知的应用二进制接口(ABI)。
类型表示
我们在源程序中起的函数名经过编译后会被修改,这就是名称修饰。

riscv 的 sbi 也是个标准
ABI 定义了
1.函数调用中对寄存器的使用
2.linux做系统调用时,调用号应该存在哪个寄存器中
3.等
计算机系统结构基础 胡伟武
第4章 软硬件协同
SBI与ABI有什么不同
他们都是标准
---
他们定义的范围不同
SBI是个新名词,ABI是个老名词
SBI是riscv独有的,ABI是每个架构都有的
- 为什么 riscv 有 abi ,其他架构没有sbi
是因为risv的开放性
arm 有 EL1 与 EL2 的交互, EL2 与 EL3 的交互,但是这些交互都没有 开放标准
arm EL1 & EL2 的交互 可以 由 KVM 来实现
arm EL2 & EL3 的交互 可以 由 ATF 来实现(arm私有的)
riscv有 s-mode 与 m-mode 的交互, 并且开放了标准 , 让更多的人可以参与实现这个标准
EL0 与 EL1 / s-mode 与 u-mode 交互没有标准 , linux 有一套标准(系统调用) , win有一套标准(系统调用)
但是再往上 有标准, 叫 posix ,大家都基于posix干活