2012-05-28 40 views
2

如何将此代码更改为ARM汇编指令? 我想在android内核中运行此代码。但我不知道如何使用ARM汇编指令。如何将此代码更改为ARM汇编指令?

#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ 
type name(type1 arg1,type2 arg2,type3 arg3) \ 
{ \ 
long __res; \ 
__asm__ volatile ("int $0x80" \ 
     : "=a" (__res) \ 
     : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ 
       "d" ((long)(arg3))); \ 
__syscall_return(type,__res); \ 
} 

非常感谢。

+0

此代码用于从用户空间调用内核系统调用。你确定,你想从内核调用系统调用吗?此代码可以通过不同的方式在ARM汇编中实现,具体取决于您使用的ABI。 – werewindle

+0

听起来像您需要了解如何使用ARM汇编指令。我们可以为您编写代码,但如果您不知道如何使用这些说明,您将再次回到这里寻求更改。 –

回答

2

你需要在ARM什么是“软件中断”指令,它是“诠释”大致相当于在x86:

swi 0 ; 0 is the interrupt vector for "syscall" 

您可以在这里的概述:OSDev Wiki on ARM

的“你好,世界“ARM/Android可以在这里找到post

+0

谢谢大家。我在ARM上找到了一个类似的代码,它是_syscall(),所以我不必修改上面的代码。 – Jimmy