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

vectors.c (1743B)


      1// SPDX-License-Identifier: GPL-2.0
      2/***************************************************************************/
      3
      4/*
      5 *	vectors.c  -- high level trap setup for ColdFire
      6 *
      7 *	Copyright (C) 1999-2007, Greg Ungerer <gerg@snapgear.com>
      8 */
      9
     10/***************************************************************************/
     11
     12#include <linux/kernel.h>
     13#include <linux/init.h>
     14#include <linux/irq.h>
     15#include <asm/traps.h>
     16#include <asm/machdep.h>
     17#include <asm/coldfire.h>
     18#include <asm/mcfsim.h>
     19#include <asm/mcfwdebug.h>
     20
     21/***************************************************************************/
     22
     23#ifdef TRAP_DBG_INTERRUPT
     24
     25asmlinkage void dbginterrupt_c(struct frame *fp)
     26{
     27	extern void dump(struct pt_regs *fp);
     28	printk(KERN_DEBUG "%s(%d): BUS ERROR TRAP\n", __FILE__, __LINE__);
     29	dump((struct pt_regs *) fp);
     30	asm("halt");
     31}
     32
     33#endif
     34
     35/***************************************************************************/
     36
     37/* Assembler routines */
     38asmlinkage void buserr(void);
     39asmlinkage void trap(void);
     40asmlinkage void system_call(void);
     41asmlinkage void inthandler(void);
     42
     43void __init trap_init(void)
     44{
     45	int i;
     46
     47	/*
     48	 *	There is a common trap handler and common interrupt
     49	 *	handler that handle almost every vector. We treat
     50	 *	the system call and bus error special, they get their
     51	 *	own first level handlers.
     52	 */
     53	for (i = 3; (i <= 23); i++)
     54		_ramvec[i] = trap;
     55	for (i = 33; (i <= 63); i++)
     56		_ramvec[i] = trap;
     57	for (i = 24; (i <= 31); i++)
     58		_ramvec[i] = inthandler;
     59	for (i = 64; (i < 255); i++)
     60		_ramvec[i] = inthandler;
     61	_ramvec[255] = 0;
     62
     63	_ramvec[2] = buserr;
     64	_ramvec[32] = system_call;
     65
     66#ifdef TRAP_DBG_INTERRUPT
     67	_ramvec[12] = dbginterrupt;
     68#endif
     69}
     70
     71/***************************************************************************/