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

ip30-power.c (963B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * ip30-power.c: Software powerdown and reset handling for IP30 architecture.
      4 *
      5 * Copyright (C) 2004-2007 Stanislaw Skowronek <skylark@unaligned.org>
      6 *               2014 Joshua Kinard <kumba@gentoo.org>
      7 *               2009 Johannes Dickgreber <tanzy@gmx.de>
      8 */
      9
     10#include <linux/init.h>
     11#include <linux/kernel.h>
     12#include <linux/module.h>
     13#include <linux/sched.h>
     14#include <linux/notifier.h>
     15#include <linux/delay.h>
     16#include <linux/rtc/ds1685.h>
     17#include <linux/interrupt.h>
     18#include <linux/pm.h>
     19
     20#include <asm/reboot.h>
     21#include <asm/sgi/heart.h>
     22
     23static void __noreturn ip30_machine_restart(char *cmd)
     24{
     25	/*
     26	 * Execute HEART cold reset
     27	 *   Yes, it's cold-HEARTed!
     28	 */
     29	heart_write((heart_read(&heart_regs->mode) | HM_COLD_RST),
     30		    &heart_regs->mode);
     31	unreachable();
     32}
     33
     34static int __init ip30_reboot_setup(void)
     35{
     36	_machine_restart = ip30_machine_restart;
     37
     38	return 0;
     39}
     40
     41subsys_initcall(ip30_reboot_setup);