table pointer // tbl等于数组表基地址
ldr ip, [tsk, #TI_FLAGS] @ check for syscall tracing...时,异或后,scno则等于0,表示数组表的基地址(第一个函数位置)
... ......, scno:要调用的sys_write()的索引值 lsl #2:左移2位,一个函数指针占据4个字节
从上面代码可以看出,2440的val基值为0x900000,也就是说要调用数组表的第一个函数时...,则使用:
swi #0x900000
2 接下来,我们便来自制一个系统调用
1)在内核中,仿照一个sys_hello函数,然后放入数组表,供swi调用
2)写应用程序,直接通过swi指令,来调用sys_hello...,传递给内核的sys_hello()
5.重新烧写内核,试验应用程序
如上图所示,一个简单的系统调用便OK了
调用成功后,就可以来修改sys_hello(),来打印应用程序的各个寄存器值,打断点,来实现调试应用程序