uclinux-2008R1.5-RC3(bf561)到VDSP5的移植

2026-03-23
有一个错误:
  [Error ea5004] "..\..\linux-2.6.x\include\asm/mach-common/context.S":35 Syntax Error in :
  .macro save_context_with_interrupts
  syntax error is at or near text ’save_context_with_interrupts’.
  Attempting error recovery by ignoring text until the ’;’
  其指向的错误代码为:
  /*
  * Code to save processor context.
  * We even save the register which are preserved by a function call
  * - r4, r5, r6, r7, p3, p4, p5
  */
  .macro save_context_with_interrupts
  ……………….
  /* Switch to other method of keeping interrupts disabled. */
  #ifdef CONFIG_DEBUG_HWERR
  r0 = 0x3f;
  sti r0;
  #else
  cli r0;
  #endif
  ………………………
  .endm
  这里有两个问题,首先是vdsp的汇编器不支持.macro,只能用#define来替代,第二个是在里面出现了#ifdef这样的条件判断,只能将之移到宏定义的外面,修改后的代码为:
  #ifdef CONFIG_DEBUG_HWERR
  #define save_context_with_interrupts \
  ……………….. \
  /* Switch to other method of keeping interrupts disabled. */ \
  r0 = 0x3f; \
  sti r0; \
  ………………. \
  //.endm
  #else
  #define save_context_with_interrupts \
  ……………………….. \
  /* Switch to other method of keeping interrupts disabled. */ \
  cli r0; \
  ……………………….. \
  //.endm
  #endif // CONFIG_DEBUG_HWERR
  其它宏的修改与此类似。