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