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 (749B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Reset a DECstation machine.
      4 *
      5 * Copyright (C) 199x  the Anonymous
      6 * Copyright (C) 2001, 2002, 2003  Maciej W. Rozycki
      7 */
      8#include <linux/interrupt.h>
      9#include <linux/linkage.h>
     10
     11#include <asm/addrspace.h>
     12
     13typedef void __noreturn (* noret_func_t)(void);
     14
     15static inline void __noreturn back_to_prom(void)
     16{
     17	noret_func_t func = (void *)CKSEG1ADDR(0x1fc00000);
     18
     19	func();
     20}
     21
     22void __noreturn dec_machine_restart(char *command)
     23{
     24	back_to_prom();
     25}
     26
     27void __noreturn dec_machine_halt(void)
     28{
     29	back_to_prom();
     30}
     31
     32void __noreturn dec_machine_power_off(void)
     33{
     34    /* DECstations don't have a software power switch */
     35	back_to_prom();
     36}
     37
     38irqreturn_t dec_intr_halt(int irq, void *dev_id)
     39{
     40	dec_machine_halt();
     41}