diff options
Diffstat (limited to 'exec/mipsfpu.h')
-rw-r--r-- | exec/mipsfpu.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/exec/mipsfpu.h b/exec/mipsfpu.h new file mode 100644 index 00000000000..1669102942b --- /dev/null +++ b/exec/mipsfpu.h @@ -0,0 +1,82 @@ +/* Program execution for Emacs. + +Copyright (C) 2023-2024 Free Software Foundation, Inc. + +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or (at +your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ + + + +#ifndef _MIPSFPU_H_ +#define _MIPSFPU_H_ + +#include "exec.h" + +struct mips_elf_abi_flags +{ + /* Version of flags structure. */ + uint16_t version; + + /* The level of the ISA: 1-5, 32, 64. */ + uint8_t isa_level; + + /* The revision of ISA: 0 for MIPS V and below, 1-n otherwise. */ + uint8_t isa_rev; + + /* The size of general purpose registers. */ + uint8_t gpr_size; + + /* The size of co-processor 1 registers. */ + uint8_t cpr1_size; + + /* The size of co-processor 2 registers. */ + uint8_t cpr2_size; + + /* The floating-point ABI. */ + uint8_t fp_abi; + + /* Mask of processor-specific extensions. */ + uint32_t isa_ext; + + /* Mask of ASEs used. */ + uint32_t ases; + + /* Mask of general flags. */ + uint32_t flags1; + + /* Mask of general flags. */ + uint32_t flags2; +}; + + + +/* Floating point modes. */ + +#define FP_FR0 0 +#define FP_FR1 1 +#define FP_FRE 3 + + + +/* Defined in mipsfpu.c. */ + +extern bool cpu_supports_fr0_p (void); +extern int determine_fpu_mode (elf_header *, elf_header *, + int *, struct mips_elf_abi_flags *, + struct mips_elf_abi_flags *); + + + +#endif /* _MIPSFPU_H_ */ |