歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

uclinux-2008R1-RC8(bf561)到VDSP5的移植(43)

uclinux-2008R1-RC8(bf561)到VDSP5的移植(43):__builtin_return_address的問題

__builtin_return_address (LEVEL):這是GCC的內建函數,用於返回當前函數或其調用者的返回地址,參數LEVEL 指定在棧上搜索框架的個數,0 表示當前函數的返回地址,1 表示當前函數的調用者的返回地址,依此類推。在VDSP中,通過FP的循環取值可以完成相似的功能(參見以前的文章《使用FP取得函數的調用堆棧》)。查了下內核對此函數的使用,僅在drivers/md/md.c中使用了1,2,3幾個LEVEL,其余的地方僅使用了0這個LEVEL,因此在這裡使用了一個簡單的替代實現方式,僅適用於LEVLE0:

#define __builtin_return_address(level) ({void* addr; /
asm("%0 = rets;" : "=a"(addr)); addr;})

Copyright © Linux教程網 All Rights Reserved