1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 27f30491cSTony Luck #ifndef _ASM_IA64_FPSWA_H 37f30491cSTony Luck #define _ASM_IA64_FPSWA_H 47f30491cSTony Luck 57f30491cSTony Luck /* 67f30491cSTony Luck * Floating-point Software Assist 77f30491cSTony Luck * 87f30491cSTony Luck * Copyright (C) 1999 Intel Corporation. 97f30491cSTony Luck * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> 107f30491cSTony Luck * Copyright (C) 1999 Goutham Rao <goutham.rao@intel.com> 117f30491cSTony Luck */ 127f30491cSTony Luck 137f30491cSTony Luck typedef struct { 147f30491cSTony Luck /* 4 * 128 bits */ 157f30491cSTony Luck unsigned long fp_lp[4*2]; 167f30491cSTony Luck } fp_state_low_preserved_t; 177f30491cSTony Luck 187f30491cSTony Luck typedef struct { 197f30491cSTony Luck /* 10 * 128 bits */ 207f30491cSTony Luck unsigned long fp_lv[10 * 2]; 217f30491cSTony Luck } fp_state_low_volatile_t; 227f30491cSTony Luck 237f30491cSTony Luck typedef struct { 247f30491cSTony Luck /* 16 * 128 bits */ 257f30491cSTony Luck unsigned long fp_hp[16 * 2]; 267f30491cSTony Luck } fp_state_high_preserved_t; 277f30491cSTony Luck 287f30491cSTony Luck typedef struct { 297f30491cSTony Luck /* 96 * 128 bits */ 307f30491cSTony Luck unsigned long fp_hv[96 * 2]; 317f30491cSTony Luck } fp_state_high_volatile_t; 327f30491cSTony Luck 337f30491cSTony Luck /** 347f30491cSTony Luck * floating point state to be passed to the FP emulation library by 357f30491cSTony Luck * the trap/fault handler 367f30491cSTony Luck */ 377f30491cSTony Luck typedef struct { 387f30491cSTony Luck unsigned long bitmask_low64; 397f30491cSTony Luck unsigned long bitmask_high64; 407f30491cSTony Luck fp_state_low_preserved_t *fp_state_low_preserved; 417f30491cSTony Luck fp_state_low_volatile_t *fp_state_low_volatile; 427f30491cSTony Luck fp_state_high_preserved_t *fp_state_high_preserved; 437f30491cSTony Luck fp_state_high_volatile_t *fp_state_high_volatile; 447f30491cSTony Luck } fp_state_t; 457f30491cSTony Luck 467f30491cSTony Luck typedef struct { 477f30491cSTony Luck unsigned long status; 487f30491cSTony Luck unsigned long err0; 497f30491cSTony Luck unsigned long err1; 507f30491cSTony Luck unsigned long err2; 517f30491cSTony Luck } fpswa_ret_t; 527f30491cSTony Luck 537f30491cSTony Luck /** 547f30491cSTony Luck * function header for the Floating Point software assist 557f30491cSTony Luck * library. This function is invoked by the Floating point software 567f30491cSTony Luck * assist trap/fault handler. 577f30491cSTony Luck */ 587f30491cSTony Luck typedef fpswa_ret_t (*efi_fpswa_t) (unsigned long trap_type, void *bundle, unsigned long *ipsr, 597f30491cSTony Luck unsigned long *fsr, unsigned long *isr, unsigned long *preds, 607f30491cSTony Luck unsigned long *ifs, fp_state_t *fp_state); 617f30491cSTony Luck 627f30491cSTony Luck /** 637f30491cSTony Luck * This is the FPSWA library interface as defined by EFI. We need to pass a 647f30491cSTony Luck * pointer to the interface itself on a call to the assist library 657f30491cSTony Luck */ 667f30491cSTony Luck typedef struct { 677f30491cSTony Luck unsigned int revision; 687f30491cSTony Luck unsigned int reserved; 697f30491cSTony Luck efi_fpswa_t fpswa; 707f30491cSTony Luck } fpswa_interface_t; 717f30491cSTony Luck 727f30491cSTony Luck extern fpswa_interface_t *fpswa_interface; 737f30491cSTony Luck 747f30491cSTony Luck #endif /* _ASM_IA64_FPSWA_H */ 75