从用户态切内核态所使用的 svc 命令跟的立即数必须是 0x80 (即 SWI_SYSCALL)吗

我发现使用 svc 命令调用 syscall,svc 后面跟的立即数不一定必须是 0x80 (即 SWI_SYSCALL)

例如 svc 0x81 或者 svc 0x114、svc 0x514 也能够完成和 svc 0x80 同样的功能

我只在部分平台和硬件上进行了测试,不知这个特性是否是普适于其他版本的内核的。感觉需要阅读 darwin 源代码

1 个赞

sy_arg_bytes 参数总计字节大小?
https://www.keil.com/support/man/docs/armasm/armasm_dom1361289909139.htm
https://developer.arm.com/documentation/ddi0597/2021-06/Base-Instructions/SVC--Supervisor-Call-?lang=en#sa_imm_1

1 个赞

感觉除了硬件的 spec 外,还是得啃内核源码中处理中断的部分有没有用到这个数

中断向量表我感觉是这个,不知道找对没