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

uclinux-2008R1-RC8(bf561)到VDSP5的移植(60):current_text_addr

在include/asm/processor.h中有這樣一個定義:

/*
 * Default implementation of macro that returns current
 * instruction pointer ("program counter").
 */
#define current_text_addr() ({ __label__ _l; _l: &&_l;})

它的作用就是取當前PC的值,但是這行語句在VDSP下會引起一個錯誤:

../../security/commoncap.c
"../../include/linux/skbuff.h", line 897: cc1454: error: taking the address
of a label is not a supported feature
skb_over_panic(skb, len, current_text_addr());
^
"../../include/linux/skbuff.h", line 922: cc1454: error: taking the address
of a label is not a supported feature
skb_under_panic(skb, len, current_text_addr());
^
2 errors detected in the compilation of "../../security/commoncap.c".
cc3089: fatal error: Compilation failed
Tool failed with exit/exception code: 1.
Build was unsuccessful.

對其做如下修改:

static inline unsigned long current_text_addr(void)
{
 unsigned long pc;

  __asm__ __volatile__("%0 = rets;/n/t":"=d"(pc));
 return pc;
}

Copyright © Linux教程網 All Rights Reserved