URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [services/] [objloader/] [current/] [include/] [relocate_ppc.h] - Rev 786
Compare with Previous | Blame | View Log
#ifndef __RELOCATE_PPC_H__ #define __RELOCATE_PPC_H__ /* ================================================================= * * relocate_ppc.h * * Architecture dependent relocation routines for the PowerPC * * ================================================================= * ####ECOSGPLCOPYRIGHTBEGIN#### * ------------------------------------------- * This file is part of eCos, the Embedded Configurable Operating System. * Copyright (C) 2005, 2008 Free Software Foundation, Inc. * * eCos 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 2 or (at your option) any later * version. * * eCos 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 eCos; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * As a special exception, if other files instantiate templates or use * macros or inline functions from this file, or you compile this file * and link it with other works to produce a work based on this file, * this file does not by itself cause the resulting work to be covered by * the GNU General Public License. However the source code for this file * must still be made available in accordance with section (3) of the GNU * General Public License v2. * * This exception does not invalidate any other reasons why a work based * on this file might be covered by the GNU General Public License. * ------------------------------------------- * ####ECOSGPLCOPYRIGHTEND#### * ================================================================= * #####DESCRIPTIONBEGIN#### * * Author(s): Anthony Tonizzo (atonizzo@gmail.com) * Date: 2005-05-13 * Purpose: * Description: * * ####DESCRIPTIONEND#### * * ================================================================= */ #define Elf_Rel 0 #define Elf_Rela 1 #define ELF_ARCH_MACHINE_TYPE 20 // PowerPC. #define ELF_ARCH_ENDIANNESS ELFDATA2MSB #define ELF_ARCH_RELTYPE Elf_Rela #define R_PPC_NONE 0 #define R_PPC_ADDR32 1 // 32bit absolute address #define R_PPC_ADDR24 2 // 26bit address, 2 bits ignored. #define R_PPC_ADDR16 3 // 16bit absolute address #define R_PPC_ADDR16_LO 4 // lower 16bit of absolute address #define R_PPC_ADDR16_HI 5 // high 16bit of absolute address #define R_PPC_ADDR16_HA 6 // adjusted high 16bit #define R_PPC_ADDR14 7 // 16bit address, 2 bits ignored #define R_PPC_ADDR14_BRTAKEN 8 #define R_PPC_ADDR14_BRNTAKEN 9 #define R_PPC_REL24 10 // PC relative 26 bit #define R_PPC_REL14 11 // PC relative 16 bit #define R_PPC_REL14_BRTAKEN 12 #define R_PPC_REL14_BRNTAKEN 13 #define R_PPC_GOT16 14 #define R_PPC_GOT16_LO 15 #define R_PPC_GOT16_HI 16 #define R_PPC_GOT16_HA 17 #define R_PPC_PLTREL24 18 #define R_PPC_COPY 19 #define R_PPC_GLOB_DAT 20 #define R_PPC_JMP_SLOT 21 #define R_PPC_RELATIVE 22 #define R_PPC_LOCAL24PC 23 #define R_PPC_UADDR32 24 #define R_PPC_UADDR16 25 #define R_PPC_REL32 26 #define R_PPC_PLT32 27 #define R_PPC_PLTREL32 28 #define R_PPC_PLT16_LO 29 #define R_PPC_PLT16_HI 30 #define R_PPC_PLT16_HA 31 #define R_PPC_SDAREL16 32 #define R_PPC_SECTOFF 33 #define R_PPC_SECTOFF_LO 34 #define R_PPC_SECTOFF_HI 35 #define R_PPC_SECTOFF_HA 36 // Keep this the last entry. #define R_PPC_NUM 37 // The remaining relocs are from the Embedded ELF ABI, and are not // in the SVR4 ELF ABI. #define R_PPC_EMB_NADDR32 101 #define R_PPC_EMB_NADDR16 102 #define R_PPC_EMB_NADDR16_LO 103 #define R_PPC_EMB_NADDR16_HI 104 #define R_PPC_EMB_NADDR16_HA 105 #define R_PPC_EMB_SDAI16 106 #define R_PPC_EMB_SDA2I16 107 #define R_PPC_EMB_SDA2REL 108 #define R_PPC_EMB_SDA21 109 // 16 bit offset in SDA #define R_PPC_EMB_MRKREF 110 #define R_PPC_EMB_RELSEC16 111 #define R_PPC_EMB_RELST_LO 112 #define R_PPC_EMB_RELST_HI 113 #define R_PPC_EMB_RELST_HA 114 #define R_PPC_EMB_BIT_FLD 115 #define R_PPC_EMB_RELSDA 116 // 16 bit relative offset in SDA // From the Elf PPC spec. #define _lo_(x) (x & 0xFFFF) #define _hi_(x) ((x >> 16) & 0xFFFF) #define _ha_(x) (((x >> 16)+((x & 0x8000) ? 1 : 0)) & 0xFFFF) void cyg_ldr_flush_cache( void ); cyg_int32 cyg_ldr_relocate( cyg_int32, cyg_uint32, cyg_int32 ); extern char *relocation_name[]; #endif //__RELOCATE_PPC_H__