Armv8架构的系统调用指令是svc,通过x0-x7通用寄存器传递相关参数。在sel4中,x0寄存器保存capability或者badge参数、x1寄存器保存message的信息、x2-x5寄存器保存传递的message实体、x7寄存器保存系统调用编号。具体如下所示:
enum _register {
X0 = 0, /* 0x00 */
capRegister = 0,
badgeRegister = 0,
X1 = 1, /* 0x08 */
msgInfoRegister = 1,
X2 = 2, /* 0x10 */
X3 = 3, /* 0x18 */
X4 = 4, /* 0x20 */
X5 = 5, /* 0x28 */
X6 = 6, /* 0x30 */
X7 = 7, /* 0x38 */
X8 = 8, /* 0x40 */
X9 = 9, /* 0x48 */
X10 = 10, /* 0x50 */
X11 = 11, /* 0x58 */
X12 = 12, /* 0x60 */
X13 = 13, /* 0x68 */
X14 = 14, /* 0x70 */
X15 = 15, /* 0x78 */
X16 = 16, /* 0x80 */
X17 = 17, /* 0x88 */
X18 = 18, /* 0x90 */
X19