^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) // Copyright (C) 2005-2017 Andes Technology Corporation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) #ifndef __NDS32_ASSEMBLER_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #define __NDS32_ASSEMBLER_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) .macro gie_disable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) setgie.d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) dsb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) .macro gie_enable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) setgie.e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) dsb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) .macro gie_save oldpsw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) mfsr \oldpsw, $ir0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) setgie.d
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) dsb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .macro gie_restore oldpsw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) andi \oldpsw, \oldpsw, #0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) beqz \oldpsw, 7001f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) setgie.e
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) dsb
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 7001:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) .endm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) #define USER(insn, reg, addr, opr) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 9999: insn reg, addr, opr; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) .section __ex_table,"a"; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) .align 3; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) .long 9999b, 9001f; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) .previous
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) #endif /* __NDS32_ASSEMBLER_H__ */