linux/arch/arm/mach-shmobile/include/mach/zboot_macros.h
<<
>>
Prefs
   1#ifndef __ZBOOT_MACRO_H
   2#define __ZBOOT_MACRO_H
   3
   4/* The LIST command is used to include comments in the script */
   5.macro  LIST comment
   6.endm
   7
   8/* The ED command is used to write a 32-bit word */
   9.macro ED, addr, data
  10        LDR     r0, 1f
  11        LDR     r1, 2f
  12        STR     r1, [r0]
  13        B       3f
  141 :     .long   \addr
  152 :     .long   \data
  163 :
  17.endm
  18
  19/* The EW command is used to write a 16-bit word */
  20.macro EW, addr, data
  21        LDR     r0, 1f
  22        LDR     r1, 2f
  23        STRH    r1, [r0]
  24        B       3f
  251 :     .long   \addr
  262 :     .long   \data
  273 :
  28.endm
  29
  30/* The EB command is used to write an 8-bit word */
  31.macro EB, addr, data
  32        LDR     r0, 1f
  33        LDR     r1, 2f
  34        STRB    r1, [r0]
  35        B       3f
  361 :     .long   \addr
  372 :     .long   \data
  383 :
  39.endm
  40
  41/* The WAIT command is used to delay the execution */
  42.macro  WAIT, time, reg
  43        LDR     r1, 1f
  44        LDR     r0, 2f
  45        STR     r0, [r1]
  4610 :
  47        LDR     r0, [r1]
  48        CMP     r0, #0x00000000
  49        BNE     10b
  50        NOP
  51        B       3f
  521 :     .long   \reg
  532 :     .long   \time * 100
  543 :
  55.endm
  56
  57/* The DD command is used to read a 32-bit word */
  58.macro  DD, start, end
  59        LDR     r1, 1f
  60        B       2f
  611 :     .long   \start
  622 :
  63.endm
  64
  65/* loop until a given value has been read (with mask) */
  66.macro WAIT_MASK, addr, data, cmp
  67        LDR     r0, 2f
  68        LDR     r1, 3f
  69        LDR     r2, 4f
  701:
  71        LDR     r3, [r0, #0]
  72        AND     r3, r1, r3
  73        CMP     r2, r3
  74        BNE     1b
  75        B       5f
  762:      .long   \addr
  773:      .long   \data
  784:      .long   \cmp
  795:
  80.endm
  81
  82/* read 32-bit value from addr, "or" an immediate and write back */
  83.macro ED_OR, addr, data
  84        LDR r4, 1f
  85        LDR r5, 2f
  86        LDR r6, [r4]
  87        ORR r5, r6, r5
  88        STR r5, [r4]
  89        B       3f
  901:      .long   \addr
  912:      .long   \data
  923:
  93.endm
  94
  95/* read 32-bit value from addr, "and" an immediate and write back */
  96.macro ED_AND, addr, data
  97        LDR r4, 1f
  98        LDR r5, 2f
  99        LDR r6, [r4]
 100        AND r5, r6, r5
 101        STR r5, [r4]
 102        B       3f
 1031:      .long \addr
 1042:      .long \data
 1053:
 106.endm
 107
 108#endif /* __ZBOOT_MACRO_H */
 109