1

我正在查看 head.S ARM linux 代码。我知道拇指模式是什么。但是有一行,例如THUMB(it eq),它是一个预定义的宏,因为#define THUMB(x...) x dotdotdot实际编写的。

请告诉我宏的作用。

ENTRY(stext)
  setmode PSR_F_BIT | PSR_I_BIT | SVC_MODE, r9 @ ensure svc mode
                                               @ and irqs disabled
  mrc p15, 0, r9, c0, c0      @ get processor id
  bl__lookup_processor_type   @ r5=procinfo r9=cpuid
  movs r10, r5                @ invalid processor (r5=0)? 
  THUMB( iteq )               @ force fixup-able long branch encoding
  beq __error_p               @ yes, error 'p'
4

1 回答 1

2

THUMB()预处理器宏用于ARM()根据目标指令集有条件地编译源程序集。如果内核正在为 ARM 目标编译,则 THUMB() 宏是无操作的。相反,如果内核正在为 THUMB 编译,则 THUMB() 宏将扩展为其参数。

于 2014-03-24T10:37:00.983 回答