162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci#ifndef __ROMIMAGE_MACRO_H
362306a36Sopenharmony_ci#define __ROMIMAGE_MACRO_H
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci/* The LIST command is used to include comments in the script */
662306a36Sopenharmony_ci.macro	LIST comment
762306a36Sopenharmony_ci.endm
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci/* The ED command is used to write a 32-bit word */
1062306a36Sopenharmony_ci.macro  ED, addr, data
1162306a36Sopenharmony_ci	mov.l 1f, r1
1262306a36Sopenharmony_ci	mov.l 2f, r0
1362306a36Sopenharmony_ci	mov.l r0, @r1
1462306a36Sopenharmony_ci	bra 3f
1562306a36Sopenharmony_ci	 nop
1662306a36Sopenharmony_ci	.align 2
1762306a36Sopenharmony_ci1 :	.long \addr
1862306a36Sopenharmony_ci2 :	.long \data
1962306a36Sopenharmony_ci3 :
2062306a36Sopenharmony_ci.endm
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* The EW command is used to write a 16-bit word */
2362306a36Sopenharmony_ci.macro  EW, addr, data
2462306a36Sopenharmony_ci	mov.l 1f, r1
2562306a36Sopenharmony_ci	mov.l 2f, r0
2662306a36Sopenharmony_ci	mov.w r0, @r1
2762306a36Sopenharmony_ci	bra 3f
2862306a36Sopenharmony_ci	 nop
2962306a36Sopenharmony_ci	.align 2
3062306a36Sopenharmony_ci1 :	.long \addr
3162306a36Sopenharmony_ci2 :	.long \data
3262306a36Sopenharmony_ci3 :
3362306a36Sopenharmony_ci.endm
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci/* The EB command is used to write an 8-bit word */
3662306a36Sopenharmony_ci.macro  EB, addr, data
3762306a36Sopenharmony_ci	mov.l 1f, r1
3862306a36Sopenharmony_ci	mov.l 2f, r0
3962306a36Sopenharmony_ci	mov.b r0, @r1
4062306a36Sopenharmony_ci	bra 3f
4162306a36Sopenharmony_ci	 nop
4262306a36Sopenharmony_ci	.align 2
4362306a36Sopenharmony_ci1 :	.long \addr
4462306a36Sopenharmony_ci2 :	.long \data
4562306a36Sopenharmony_ci3 :
4662306a36Sopenharmony_ci.endm
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/* The WAIT command is used to delay the execution */
4962306a36Sopenharmony_ci.macro  WAIT, time
5062306a36Sopenharmony_ci	mov.l  2f, r3
5162306a36Sopenharmony_ci1 :
5262306a36Sopenharmony_ci	nop
5362306a36Sopenharmony_ci	tst     r3, r3
5462306a36Sopenharmony_ci	bf/s    1b
5562306a36Sopenharmony_ci	dt      r3
5662306a36Sopenharmony_ci	bra	3f
5762306a36Sopenharmony_ci	 nop
5862306a36Sopenharmony_ci	.align 2
5962306a36Sopenharmony_ci2 :	.long \time * 100
6062306a36Sopenharmony_ci3 :
6162306a36Sopenharmony_ci.endm
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci/* The DD command is used to read a 32-bit word */
6462306a36Sopenharmony_ci.macro  DD, addr, addr2, nr
6562306a36Sopenharmony_ci	mov.l 1f, r1
6662306a36Sopenharmony_ci	mov.l @r1, r0
6762306a36Sopenharmony_ci	bra 2f
6862306a36Sopenharmony_ci	 nop
6962306a36Sopenharmony_ci	.align 2
7062306a36Sopenharmony_ci1 :	.long \addr
7162306a36Sopenharmony_ci2 :
7262306a36Sopenharmony_ci.endm
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci#endif /* __ROMIMAGE_MACRO_H */
75