18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci#ifndef __ROMIMAGE_MACRO_H
38c2ecf20Sopenharmony_ci#define __ROMIMAGE_MACRO_H
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci/* The LIST command is used to include comments in the script */
68c2ecf20Sopenharmony_ci.macro	LIST comment
78c2ecf20Sopenharmony_ci.endm
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci/* The ED command is used to write a 32-bit word */
108c2ecf20Sopenharmony_ci.macro  ED, addr, data
118c2ecf20Sopenharmony_ci	mov.l 1f, r1
128c2ecf20Sopenharmony_ci	mov.l 2f, r0
138c2ecf20Sopenharmony_ci	mov.l r0, @r1
148c2ecf20Sopenharmony_ci	bra 3f
158c2ecf20Sopenharmony_ci	 nop
168c2ecf20Sopenharmony_ci	.align 2
178c2ecf20Sopenharmony_ci1 :	.long \addr
188c2ecf20Sopenharmony_ci2 :	.long \data
198c2ecf20Sopenharmony_ci3 :
208c2ecf20Sopenharmony_ci.endm
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci/* The EW command is used to write a 16-bit word */
238c2ecf20Sopenharmony_ci.macro  EW, addr, data
248c2ecf20Sopenharmony_ci	mov.l 1f, r1
258c2ecf20Sopenharmony_ci	mov.l 2f, r0
268c2ecf20Sopenharmony_ci	mov.w r0, @r1
278c2ecf20Sopenharmony_ci	bra 3f
288c2ecf20Sopenharmony_ci	 nop
298c2ecf20Sopenharmony_ci	.align 2
308c2ecf20Sopenharmony_ci1 :	.long \addr
318c2ecf20Sopenharmony_ci2 :	.long \data
328c2ecf20Sopenharmony_ci3 :
338c2ecf20Sopenharmony_ci.endm
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci/* The EB command is used to write an 8-bit word */
368c2ecf20Sopenharmony_ci.macro  EB, addr, data
378c2ecf20Sopenharmony_ci	mov.l 1f, r1
388c2ecf20Sopenharmony_ci	mov.l 2f, r0
398c2ecf20Sopenharmony_ci	mov.b r0, @r1
408c2ecf20Sopenharmony_ci	bra 3f
418c2ecf20Sopenharmony_ci	 nop
428c2ecf20Sopenharmony_ci	.align 2
438c2ecf20Sopenharmony_ci1 :	.long \addr
448c2ecf20Sopenharmony_ci2 :	.long \data
458c2ecf20Sopenharmony_ci3 :
468c2ecf20Sopenharmony_ci.endm
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci/* The WAIT command is used to delay the execution */
498c2ecf20Sopenharmony_ci.macro  WAIT, time
508c2ecf20Sopenharmony_ci	mov.l  2f, r3
518c2ecf20Sopenharmony_ci1 :
528c2ecf20Sopenharmony_ci	nop
538c2ecf20Sopenharmony_ci	tst     r3, r3
548c2ecf20Sopenharmony_ci	bf/s    1b
558c2ecf20Sopenharmony_ci	dt      r3
568c2ecf20Sopenharmony_ci	bra	3f
578c2ecf20Sopenharmony_ci	 nop
588c2ecf20Sopenharmony_ci	.align 2
598c2ecf20Sopenharmony_ci2 :	.long \time * 100
608c2ecf20Sopenharmony_ci3 :
618c2ecf20Sopenharmony_ci.endm
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_ci/* The DD command is used to read a 32-bit word */
648c2ecf20Sopenharmony_ci.macro  DD, addr, addr2, nr
658c2ecf20Sopenharmony_ci	mov.l 1f, r1
668c2ecf20Sopenharmony_ci	mov.l @r1, r0
678c2ecf20Sopenharmony_ci	bra 2f
688c2ecf20Sopenharmony_ci	 nop
698c2ecf20Sopenharmony_ci	.align 2
708c2ecf20Sopenharmony_ci1 :	.long \addr
718c2ecf20Sopenharmony_ci2 :
728c2ecf20Sopenharmony_ci.endm
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci#endif /* __ROMIMAGE_MACRO_H */
75