1 1.1 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ 2 1.1 christos 3 1.1 christos /* KVX ELF IDs definitions. 4 1.1 christos 5 1.1 christos Copyright (C) 2009-2024 Free Software Foundation, Inc. 6 1.1 christos Contributed by Kalray SA. 7 1.1 christos 8 1.1 christos This file is part of GNU Binutils. 9 1.1 christos 10 1.1 christos This program is free software; you can redistribute it and/or modify 11 1.1 christos it under the terms of the GNU General Public License as published by 12 1.1 christos the Free Software Foundation; either version 3 of the license, or 13 1.1 christos (at your option) any later version. 14 1.1 christos 15 1.1 christos This program is distributed in the hope that it will be useful, 16 1.1 christos but WITHOUT ANY WARRANTY; without even the implied warranty of 17 1.1 christos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 1.1 christos GNU General Public License for more details. 19 1.1 christos 20 1.1 christos You should have received a copy of the GNU General Public License 21 1.1 christos along with this program; see the file COPYING3. If not, 22 1.1 christos see <http://www.gnu.org/licenses/>. */ 23 1.1 christos 24 1.1 christos /* This file holds definitions specific to the KV3 ELF IDs. */ 25 1.1 christos 26 1.1 christos #ifndef _KVX_ELFIDS_H_ 27 1.1 christos #define _KVX_ELFIDS_H_ 28 1.1 christos 29 1.1 christos /* 16.15 8.7 4.3 0 */ 30 1.1 christos /* +----------------------------+ */ 31 1.1 christos /* | CUT | CORE |PIC |ABI | */ 32 1.1 christos /* +----------------------------+ */ 33 1.1 christos 34 1.1 christos 35 1.1 christos #define KVX_CUT_MASK 0x00ff0000 36 1.1 christos #define KVX_CORE_MASK 0x0000ff00 37 1.1 christos #define KVX_ABI_MASK 0x000000ff 38 1.1 christos #define KVX_MACH_MASK (KVX_CUT_MASK | KVX_CORE_MASK | KVX_ABI_MASK) 39 1.1 christos 40 1.1 christos /* 41 1.1 christos * Machine private data : 42 1.1 christos * - byte 0 = ABI specific (PIC, OS, ...) 43 1.1 christos * - bit 0..3 = ABI ident 44 1.1 christos * - bit 4 = 32/64 bits addressing 45 1.1 christos * - bit 5 = PIC 46 1.1 christos * - byte 1 = Core info : 47 1.1 christos * - bits 0..3 = Core Major Version 48 1.1 christos * - bit 4..7 = Core Minor Version 49 1.1 christos */ 50 1.1 christos 51 1.1 christos /* Core */ 52 1.1 christos #define ELF_KVX_CORE_BIT_SHIFT (8) 53 1.1 christos #define ELF_KVX_CORE_MASK (0x7f<<ELF_KVX_CORE_BIT_SHIFT) 54 1.1 christos 55 1.1 christos #define ELF_KVX_CORE_MAJOR_MASK (0x0F << ELF_KVX_CORE_BIT_SHIFT) 56 1.1 christos #define ELF_KVX_CORE_MINOR_MASK (0xF0 << ELF_KVX_CORE_BIT_SHIFT) 57 1.1 christos #define ELF_KVX_CORE_MAJOR_SHIFT (0 + ELF_KVX_CORE_BIT_SHIFT) 58 1.1 christos #define ELF_KVX_CORE_MINOR_SHIFT (4 + ELF_KVX_CORE_BIT_SHIFT) 59 1.1 christos 60 1.1 christos #define ELF_KVX_CORE_KV3 (0x03 << ELF_KVX_CORE_BIT_SHIFT) 61 1.1 christos #define ELF_KVX_CORE_KV4 (0x04 << ELF_KVX_CORE_BIT_SHIFT) 62 1.1 christos 63 1.1 christos #define ELF_KVX_CORE_KV3_1 (ELF_KVX_CORE_KV3 | (1 << (ELF_KVX_CORE_MINOR_SHIFT))) 64 1.1 christos #define ELF_KVX_CORE_KV3_2 (ELF_KVX_CORE_KV3 | (2 << (ELF_KVX_CORE_MINOR_SHIFT))) 65 1.1 christos #define ELF_KVX_CORE_KV4_1 (ELF_KVX_CORE_KV4 | (1 << (ELF_KVX_CORE_MINOR_SHIFT))) 66 1.1 christos 67 1.1 christos #define ELF_KVX_IS_KV3(flags) (((flags) & ELF_KVX_CORE_MAJOR_MASK) == (ELF_KVX_CORE_KV3)) 68 1.1 christos #define ELF_KVX_IS_KV4(flags) (((flags) & ELF_KVX_CORE_MAJOR_MASK) == (ELF_KVX_CORE_KV4)) 69 1.1 christos #define ELF_KVX_CHECK_CORE(flags,m) (((flags) & ELF_KVX_CORE_MASK)==(m)) 70 1.1 christos 71 1.1 christos #define ELF_KVX_ABI_MASK (0xFF) 72 1.1 christos 73 1.1 christos #define ELF_KVX_ABI_IDENT_MASK (0x7) 74 1.1 christos #define ELF_KVX_ABI_REGULAR (0x1) 75 1.1 christos #define ELF_KVX_ABI_UNDEF (0x0) 76 1.1 christos 77 1.1 christos #define ELF_KVX_ABI_64B_ADDR_BIT (0x08) 78 1.1 christos 79 1.1 christos #define ELF_KVX_ABI_PIC_BIT (0x10) 80 1.1 christos 81 1.1 christos #endif /* _KVX_ELFIDS_H_ */ 82