; ; arm
by
luozhiyong131
-
移动操作系统
-
2011-12-22 08:51:02 阅读(560) 回复(0)
我在C语言中 ..... aa(); ........ 在汇编中: aa: bx lr 就这么简单的一个调用,为什么下到板子上就死机呢,是我汇编写的不对?
代码是这样写的,手动跳到ucall_func_addr的地址执行。其余的是参数。ret是返回值。 asm("mov r0, %1\n" "mov r1, %2\n" "mov r2, %3\n" "mov r3, %4\n" "sub sp, sp, #8\n" "mov r4, %5\n" "blx r4\n" "add sp, sp, #8\n" "mov %0, r0\n" : "+r"(ret) : "r"(ucall_args[0]),"r"(ucall_args[1]),"r"(ucall_args[2]),"r"(ucall_args[3]),"r"(...
对于arm体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(arm-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个...
对于arm体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(arm-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是 汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果...
对于arm体系来说,不同语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(arm-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容可以查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回。 不同于x86的参数传递规则,ATPCS建议函数的形参不超过4个,如果形参个...
这个函数定义在arch\arm\include\asm\pgtable.h 通常在pte_offset_map中被调用: [code] #define pte_offset_map(dir,addr) (pmd_page_vaddr(*(dir)) + __pte_index(addr)) [/code] pmd_page_vaddr()本身很小,贴在这里了: [code] static inline pte_t *pmd_page_vaddr(pmd_t pmd) { unsigned long ptr; ptr = pmd_val(pmd) & ~(PTRS_PER_PTE * sizeof(void *) - 1); ptr += PTRS_PER_PTE * sizeof(void *); return __va(pt...