在uclinux中,jiffies_64的聲明為:
#define __jiffy_data __attribute__((section(".data")))
extern u64 __jiffy_data jiffies_64;
其定義在kernel/timer.c:
u64 __jiffy_data jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
這樣的定義看起來沒有什麼問題,但是在編譯kernel/timer.c時卻造成了一個非常奇怪的錯誤,出錯提示為:
[Error ea1008] "e:/temp/acc08143dff000/acc08143dff001.s":3601 '.epcdata':
The symbol has already been defined and cannot be redefined.
[Error ea1008] "e:/temp/acc08143dff000/acc08143dff001.s":3608 '.epcdata.end':
The symbol has already been defined and cannot be redefined.
但是如果將定義改為:
extern u64 /*__jiffy_data*/ jiffies_64;
u64 /*__jiffy_data*/ jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;
則沒有任何問題。
猜測這和u64這種數據類型有關。
uclinux-2008R1-RC8(bf561)到VDSP5的移植(55):filemap.c的問題
uclinux-2008R1-RC8(bf561)到VDSP5的移植(54):initramfs的問題
uclinux-2008R1-RC8(bf561)到VDSP5的移植(53):reboot.c的問題
uclinux-2008R1-RC8(bf561)到VDSP5的移植(52):cache.s的問題
uclinux-2008R1-RC8(bf561)到VDSP5的移植(49):kernel_thread_helper的問題
uclinux-2008R1-RC8(bf561)到VDSP5的移植(48):__cmpxchg的問題