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

fiq.h (1391B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 *  arch/arm/include/asm/fiq.h
      4 *
      5 * Support for FIQ on ARM architectures.
      6 * Written by Philip Blundell <philb@gnu.org>, 1998
      7 * Re-written by Russell King
      8 *
      9 * NOTE: The FIQ mode registers are not magically preserved across
     10 * suspend/resume.
     11 *
     12 * Drivers which require these registers to be preserved across power
     13 * management operations must implement appropriate suspend/resume handlers to
     14 * save and restore them.
     15 */
     16
     17#ifndef __ASM_FIQ_H
     18#define __ASM_FIQ_H
     19
     20#include <asm/ptrace.h>
     21
     22struct fiq_handler {
     23	struct fiq_handler *next;
     24	/* Name
     25	 */
     26	const char *name;
     27	/* Called to ask driver to relinquish/
     28	 * reacquire FIQ
     29	 * return zero to accept, or -<errno>
     30	 */
     31	int (*fiq_op)(void *, int relinquish);
     32	/* data for the relinquish/reacquire functions
     33	 */
     34	void *dev_id;
     35};
     36
     37extern int claim_fiq(struct fiq_handler *f);
     38extern void release_fiq(struct fiq_handler *f);
     39extern void set_fiq_handler(void *start, unsigned int length);
     40extern void enable_fiq(int fiq);
     41extern void disable_fiq(int fiq);
     42
     43/* helpers defined in fiqasm.S: */
     44extern void __set_fiq_regs(unsigned long const *regs);
     45extern void __get_fiq_regs(unsigned long *regs);
     46
     47static inline void set_fiq_regs(struct pt_regs const *regs)
     48{
     49	__set_fiq_regs(&regs->ARM_r8);
     50}
     51
     52static inline void get_fiq_regs(struct pt_regs *regs)
     53{
     54	__get_fiq_regs(&regs->ARM_r8);
     55}
     56
     57#endif