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

fpstate.h (1478B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 *  arch/arm/include/asm/fpstate.h
      4 *
      5 *  Copyright (C) 1995 Russell King
      6 */
      7
      8#ifndef __ASM_ARM_FPSTATE_H
      9#define __ASM_ARM_FPSTATE_H
     10
     11
     12#ifndef __ASSEMBLY__
     13
     14/*
     15 * VFP storage area has:
     16 *  - FPEXC, FPSCR, FPINST and FPINST2.
     17 *  - 16 or 32 double precision data registers
     18 *  - an implementation-dependent word of state for FLDMX/FSTMX (pre-ARMv6)
     19 * 
     20 *  FPEXC will always be non-zero once the VFP has been used in this process.
     21 */
     22
     23struct vfp_hard_struct {
     24#ifdef CONFIG_VFPv3
     25	__u64 fpregs[32];
     26#else
     27	__u64 fpregs[16];
     28#endif
     29#if __LINUX_ARM_ARCH__ < 6
     30	__u32 fpmx_state;
     31#endif
     32	__u32 fpexc;
     33	__u32 fpscr;
     34	/*
     35	 * VFP implementation specific state
     36	 */
     37	__u32 fpinst;
     38	__u32 fpinst2;
     39
     40#ifdef CONFIG_SMP
     41	__u32 cpu;
     42#endif
     43};
     44
     45union vfp_state {
     46	struct vfp_hard_struct	hard;
     47};
     48
     49extern void vfp_flush_thread(union vfp_state *);
     50extern void vfp_release_thread(union vfp_state *);
     51
     52#define FP_HARD_SIZE 35
     53
     54struct fp_hard_struct {
     55	unsigned int save[FP_HARD_SIZE];		/* as yet undefined */
     56};
     57
     58#define FP_SOFT_SIZE 35
     59
     60struct fp_soft_struct {
     61	unsigned int save[FP_SOFT_SIZE];		/* undefined information */
     62};
     63
     64#define IWMMXT_SIZE	0x98
     65
     66struct iwmmxt_struct {
     67	unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
     68};
     69
     70union fp_state {
     71	struct fp_hard_struct	hard;
     72	struct fp_soft_struct	soft;
     73#ifdef CONFIG_IWMMXT
     74	struct iwmmxt_struct	iwmmxt;
     75#endif
     76};
     77
     78#define FP_SIZE (sizeof(union fp_state) / sizeof(int))
     79
     80#endif
     81
     82#endif