1 /* Program execution for Emacs. 2 3 Copyright (C) 2023 Free Software Foundation, Inc. 4 5 This file is part of GNU Emacs. 6 7 GNU Emacs is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or (at 10 your option) any later version. 11 12 GNU Emacs is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ 19 20 21 22 #ifndef _MIPSFPU_H_ 23 #define _MIPSFPU_H_ 24 25 #include "exec.h" 26 27 struct mips_elf_abi_flags 28 { 29 /* Version of flags structure. */ 30 uint16_t version; 31 32 /* The level of the ISA: 1-5, 32, 64. */ 33 uint8_t isa_level; 34 35 /* The revision of ISA: 0 for MIPS V and below, 1-n otherwise. */ 36 uint8_t isa_rev; 37 38 /* The size of general purpose registers. */ 39 uint8_t gpr_size; 40 41 /* The size of co-processor 1 registers. */ 42 uint8_t cpr1_size; 43 44 /* The size of co-processor 2 registers. */ 45 uint8_t cpr2_size; 46 47 /* The floating-point ABI. */ 48 uint8_t fp_abi; 49 50 /* Mask of processor-specific extensions. */ 51 uint32_t isa_ext; 52 53 /* Mask of ASEs used. */ 54 uint32_t ases; 55 56 /* Mask of general flags. */ 57 uint32_t flags1; 58 59 /* Mask of general flags. */ 60 uint32_t flags2; 61 }; 62 63 64 65 /* Floating point modes. */ 66 67 #define FP_FR0 0 68 #define FP_FR1 1 69 #define FP_FRE 3 70 71 72 73 /* Defined in mipsfpu.c. */ 74 75 extern bool cpu_supports_fr0_p (void); 76 extern int determine_fpu_mode (elf_header *, elf_header *, 77 int *, struct mips_elf_abi_flags *, 78 struct mips_elf_abi_flags *); 79 80 81 82 #endif /* _MIPSFPU_H_ */