Home | History | Annotate | Line # | Download | only in elf
      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