^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * linux/arch/arm/lib/ecard.S
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) * Copyright (C) 1995, 1996 Russell King
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) * 27/03/03 Ian Molton Clean up CONFIG_CPU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <asm/assembler.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define CPSR2SPSR(rt) \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) mrs rt, cpsr; \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) msr spsr_cxsf, rt
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) @ Purpose: call an expansion card loader to read bytes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) @ Proto : char read_loader(int offset, char *card_base, char *loader);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) @ Returns: byte read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) ENTRY(ecard_loader_read)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) stmfd sp!, {r4 - r12, lr}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) mov r11, r1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) mov r1, r0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) CPSR2SPSR(r0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) mov lr, pc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) mov pc, r2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ldmfd sp!, {r4 - r12, pc}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) @ Purpose: call an expansion card loader to reset the card
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) @ Proto : void read_loader(int card_base, char *loader);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) @ Returns: byte read
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) ENTRY(ecard_loader_reset)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) stmfd sp!, {r4 - r12, lr}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) mov r11, r0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) CPSR2SPSR(r0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) mov lr, pc
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) add pc, r1, #8
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) ldmfd sp!, {r4 - r12, pc}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)