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

reset.c (1141B)


      1/*
      2 * reset.c  -- common ColdFire SoC reset support
      3 *
      4 * (C) Copyright 2012, Greg Ungerer <gerg@uclinux.org>
      5 *
      6 * This file is subject to the terms and conditions of the GNU General Public
      7 * License.  See the file COPYING in the main directory of this archive
      8 * for more details.
      9 */
     10
     11#include <linux/kernel.h>
     12#include <linux/init.h>
     13#include <linux/io.h>
     14#include <asm/machdep.h>
     15#include <asm/coldfire.h>
     16#include <asm/mcfsim.h>
     17
     18/*
     19 *	There are 2 common methods amongst the ColdFure parts for reseting
     20 *	the CPU. But there are couple of exceptions, the 5272 and the 547x
     21 *	have something completely special to them, and we let their specific
     22 *	subarch code handle them.
     23 */
     24
     25#ifdef MCFSIM_SYPCR
     26static void mcf_cpu_reset(void)
     27{
     28	local_irq_disable();
     29	/* Set watchdog to soft reset, and enabled */
     30	__raw_writeb(0xc0, MCFSIM_SYPCR);
     31	for (;;)
     32		/* wait for watchdog to timeout */;
     33}
     34#endif
     35
     36#ifdef MCF_RCR
     37static void mcf_cpu_reset(void)
     38{
     39	local_irq_disable();
     40	__raw_writeb(MCF_RCR_SWRESET, MCF_RCR);
     41}
     42#endif
     43
     44static int __init mcf_setup_reset(void)
     45{
     46	mach_reset = mcf_cpu_reset;
     47	return 0;
     48}
     49
     50arch_initcall(mcf_setup_reset);