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

errata_cip_453.S (799B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) 2021 SiFive
      4 */
      5
      6#include <linux/linkage.h>
      7#include <asm/asm.h>
      8#include <asm/asm-offsets.h>
      9#include <asm/alternative.h>
     10
     11.macro ADD_SIGN_EXT pt_reg badaddr tmp_reg
     12	REG_L \badaddr, PT_BADADDR(\pt_reg)
     13	li \tmp_reg,1
     14	slli \tmp_reg,\tmp_reg,0x26
     15	and \tmp_reg,\tmp_reg,\badaddr
     16	beqz \tmp_reg, 1f
     17	li \tmp_reg,-1
     18	slli \tmp_reg,\tmp_reg,0x27
     19	or \badaddr,\tmp_reg,\badaddr
     20	REG_S \badaddr, PT_BADADDR(\pt_reg)
     211:
     22.endm
     23
     24ENTRY(sifive_cip_453_page_fault_trp)
     25	ADD_SIGN_EXT a0, t0, t1
     26#ifdef CONFIG_MMU
     27	la t0, do_page_fault
     28#else
     29	la t0, do_trap_unknown
     30#endif
     31	jr t0
     32END(sifive_cip_453_page_fault_trp)
     33
     34ENTRY(sifive_cip_453_insn_fault_trp)
     35	ADD_SIGN_EXT a0, t0, t1
     36	la t0, do_trap_insn_fault
     37	jr t0
     38END(sifive_cip_453_insn_fault_trp)