cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ecard-loader.S (874B)


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