a56585d12c
Adds support to run the kernel on the uninitialized KZM9G board, using for instance the mask ROM boot loader or JTAG. This patch tries to emulate the style of the corresponding "mackerel" implementation. The DRAM controller setup code has been adapted from u-boot. Signed-off-by: Ulrich Hecht <ulrich.hecht@gmail.com> Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
109 lines
1.6 KiB
C
109 lines
1.6 KiB
C
#ifndef __ZBOOT_MACRO_H
|
|
#define __ZBOOT_MACRO_H
|
|
|
|
/* The LIST command is used to include comments in the script */
|
|
.macro LIST comment
|
|
.endm
|
|
|
|
/* The ED command is used to write a 32-bit word */
|
|
.macro ED, addr, data
|
|
LDR r0, 1f
|
|
LDR r1, 2f
|
|
STR r1, [r0]
|
|
B 3f
|
|
1 : .long \addr
|
|
2 : .long \data
|
|
3 :
|
|
.endm
|
|
|
|
/* The EW command is used to write a 16-bit word */
|
|
.macro EW, addr, data
|
|
LDR r0, 1f
|
|
LDR r1, 2f
|
|
STRH r1, [r0]
|
|
B 3f
|
|
1 : .long \addr
|
|
2 : .long \data
|
|
3 :
|
|
.endm
|
|
|
|
/* The EB command is used to write an 8-bit word */
|
|
.macro EB, addr, data
|
|
LDR r0, 1f
|
|
LDR r1, 2f
|
|
STRB r1, [r0]
|
|
B 3f
|
|
1 : .long \addr
|
|
2 : .long \data
|
|
3 :
|
|
.endm
|
|
|
|
/* The WAIT command is used to delay the execution */
|
|
.macro WAIT, time, reg
|
|
LDR r1, 1f
|
|
LDR r0, 2f
|
|
STR r0, [r1]
|
|
10 :
|
|
LDR r0, [r1]
|
|
CMP r0, #0x00000000
|
|
BNE 10b
|
|
NOP
|
|
B 3f
|
|
1 : .long \reg
|
|
2 : .long \time * 100
|
|
3 :
|
|
.endm
|
|
|
|
/* The DD command is used to read a 32-bit word */
|
|
.macro DD, start, end
|
|
LDR r1, 1f
|
|
B 2f
|
|
1 : .long \start
|
|
2 :
|
|
.endm
|
|
|
|
/* loop until a given value has been read (with mask) */
|
|
.macro WAIT_MASK, addr, data, cmp
|
|
LDR r0, 2f
|
|
LDR r1, 3f
|
|
LDR r2, 4f
|
|
1:
|
|
LDR r3, [r0, #0]
|
|
AND r3, r1, r3
|
|
CMP r2, r3
|
|
BNE 1b
|
|
B 5f
|
|
2: .long \addr
|
|
3: .long \data
|
|
4: .long \cmp
|
|
5:
|
|
.endm
|
|
|
|
/* read 32-bit value from addr, "or" an immediate and write back */
|
|
.macro ED_OR, addr, data
|
|
LDR r4, 1f
|
|
LDR r5, 2f
|
|
LDR r6, [r4]
|
|
ORR r5, r6, r5
|
|
STR r5, [r4]
|
|
B 3f
|
|
1: .long \addr
|
|
2: .long \data
|
|
3:
|
|
.endm
|
|
|
|
/* read 32-bit value from addr, "and" an immediate and write back */
|
|
.macro ED_AND, addr, data
|
|
LDR r4, 1f
|
|
LDR r5, 2f
|
|
LDR r6, [r4]
|
|
AND r5, r6, r5
|
|
STR r5, [r4]
|
|
B 3f
|
|
1: .long \addr
|
|
2: .long \data
|
|
3:
|
|
.endm
|
|
|
|
#endif /* __ZBOOT_MACRO_H */
|