| The Datasheet Archive - 100 Million Datasheets from 7500 Manufacturers. |
6(0,&21'8&725 32:(5 3RZHU (PEHGGHG $SSOL.DWLRQ %LQDU\ ,QWHUI
Top Searches for this datasheet6(0,&21'8&725 32:(5 3RZHU (PEHGGHG $SSOL.DWLRQ %LQDU\ ,QWHUID.H ($%, ,PSOHPHQWDWLRQ 6WHYHQ 6REHN .HYLQ %XUNH Freescale Semiconductor, Inc. More Information This Product, www.freescale.com PowerPC Embedded Application Binary Interface Freescale Semiconductor, Inc. 32-Bit Implementation Version Initial Release Description Date 01/10/95 information contact: Stephen Sobek Microcontroller Technologies Group Motorola 6501 William Cannon Drive West Mail Stop OE45 Austin, 78735 steve@avar.sps.mot.com Kevin Burke Technology Products International Business Machines Corporation 3039 Cornwallis Road Mail Stop H83/061 Research Triangle Park, 27709 kevin_burke@vnet.ibm.com PowerPC EABI, Version More Information This Product, www.freescale.com 1995 Motorola, Inc. rights reserved. Important Notice Users While every effort been made ensure accuracy information this document, Motorola assumes liability party loss damage caused errors omissions statements kind this document, updates, supplements, special editions, whether such errors omissions statements resulting from negligence, accident, other cause. Motorola further assumes liability arising application information, product, system described herein; liability incidental consequential damages arising from this document. Motorola disclaims warranties regarding information contained herein, whether expressed, implied statutory, including implied warranties merchantability fitness particular purpose. Motorola makes representation that interconnection products manner described herein will infringe existing future patent rights, descriptions contained herein imply granting license make, sell equipment constructed accordance with this description. Trademarks following trademarks apply this document: PowerPC trademarks International Business Machines Corporation. Motorola trademark Motorola, Inc. UNIX registered trademark Novell, Inc. United States other countries, licensed exclusively through X/Open Company, Ltd. Freescale Semiconductor, Inc. PowerPC EABI, Version More Information This Product, www.freescale.com Foreword PowerPC Embedded Application Binary Interface, EABI, created meet unique needs PowerPC embedded applications, specifically minimizing memory usage while maintaining high performance. EABI developed industry-wide working group consisting PowerPC chip manufacturers, software tool vendors, users. EABI defines conventions intended afford interoperability between conforming software components (e.g., compilers, debuggers, assembly language code). These conventions optimized embedded applications, which typically differ from desktop applications least following ways: based real-time oriented memory constrained single purpose application Freescale Semiconductor, Inc. EABI created with explicit goal being close possible existing desktop ABI. While several alternatives were considered (e.g., PowerOpen ABI), chosen Unix System Release (SVR4) PowerPC. This choice makes possible SVR4 functions EABI environment without recompilation. ABI's sufficiently close that software tool vendors support both ABI's with single tools. Embedded programs that conform EABI gain efficiency space time using following features: minimized stack usage relaxed alignment restrictions, optimizing memory usage small data areas data, read-only data, data around address zero. These reduce code size improve data access time. Acknowledgements Members PowerPC Embedded Application Binary Interface Working Group devoted substantial time effort create this standard included: Barrett Kevin Burke Felix Burton Thomas Collopy Bill DeStein Mark Edwards Tomas Evensen Chris Ford Craig Franklin Tony Goelz Greenberg David Layman Steve Mihalik Rebecca Moeller Jack Patteeuw Steve Sobek Budi Sutardja Fred Viles Alex Steven Zucker working group grateful efforts made participants. PowerPC EABI, Version More Information This Product, www.freescale.com References ANSI X3.159-1989, American National Standard Information Systems Programming Language American National Standards Institute, 1989. DWARF Debugging Information Format, Revision: Version 1.1.0, UNIX International, Programming Languages SIG, October 1992. DWARF Debugging Information Format, Revision: Version 2.0.0, Industry Review Draft, UNIX International, Programming Languages SIG, July 1993. Freescale Semiconductor, Inc. PowerPC Microprocessor Family: Programming Environments, Motorola, Motorola document MPCFPE/AD, Microelectronics document MPRPPCFPE-01, 1994. System Application Binary Interface, Third Edition, UNIX System Laboratories, 1994 (ISBN 0-13-100439-5). System Application Binary Interface, PowerPC Processor Supplement, Microsystems IBM, 1995. PowerPC EABI, Version More Information This Product, www.freescale.com Table Contents CHAPTER Terminology PowerPC Embedded Application Binary Interface Introduction Overview Relationship UNIX System Release Base Extended Conformance Definitions Notation Future Directions CHAPTER CHAPTER Software Installation Freescale Semiconductor, Inc. Low-Level System Information SVR4 Execution Support Machine Interface Processor Architecture Data Representation Fundamental Types Aggregates Unions Function Calling Sequence Registers Stack Frame Operating System Interface Exception Interface Process Initialization Coding Examples Data Objects Dynamic Stack Space Allocation DWARF Definition DWARF Register Number Mapping Address Class Codes PowerPC EABI, Version More Information This Product, www.freescale.com CHAPTER Object Files Object File Processing Header Machine Information Sections Special Sections Relocation Relocation Types Freescale Semiconductor, Inc. CHAPTER Program Loading Dynamic Linking Program Loading Program Interpreter CHAPTER Libraries SVR4 Library Routines Software Floating Point Emulation Support Routines APPENDIX EABI Summary PowerPC EABI, Version More Information This Product, www.freescale.com PowerPC Embedded Application Binary Interface CHAPTER PowerPC Embedded Application Binary Interface Freescale Semiconductor, Inc. Introduction Overview PowerPC Embedded Application Binary Interface (EABI) defines system interface compiled assembled embedded application programs that will embedded 32-bit implementations PowerPC architecture. Terminology word "shall" this document denotes characteristic behavior that mandatory EABI-conforming entity, such application program compiler. word "may" denotes characteristic behavior that explicitly permitted EABI-conforming entity. PowerPC EABI, Version More Information This Product, www.freescale.com PowerPC Embedded Application Binary Interface Relationship UNIX System Release Except noted this document, EABI adopts specifications found those editions System Application Binary Interface System Application Binary Interface, PowerPC Processor Supplement that listed references. Base Extended Conformance Freescale Semiconductor, Inc. This document defines levels conformance base EABI conformance extended EABI conformance. Base EABI conformance shall consist conforming requirements that labeled EXTENDED. Extended EABI conformance shall consist conforming requirements, including those labeled EXTENDED, with requirement labeled EXTENDED superseding conflicting base conformance requirements. E.g., extended EABI conformance requirement that static linker support SVR4 relocation types supersedes base EABI conformance requirement that relocation types Table supported. Definitions Notation following definitions notation used throughout this document: SVR4 UNIX System Release operating system. SVR4 UNIX System Release Application Binary Interface, including PowerPC processor supplement. Numbers decimal unless specified following way: 0xnnnn, where nnnn non-empty sequence hexadecimal digits, denotes hexadecimal number whose value, expressed hexadecimal, nnnn. byte bits. word bits bytes). GPRn, where number, denotes PowerPC General Purpose Register Future Directions Characteristics behaviors mandated this version EABI shall continue mandated indefinitely except where this document explicitly states otherwise. mandates that might withdrawn altered next edition EABI preceded WARNING: appear bold face type. PowerPC EABI, Version More Information This Product, www.freescale.com Software Installation CHAPTER Software Installation Freescale Semiconductor, Inc. Unlike SVR4 ABI, EABI shall have required physical media distribution EABIconforming application software, required software format (such continuous data stream) physical media, required layout files physical media, required format interpretation installation data files. PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information CHAPTER Low-Level System Information Freescale Semiconductor, Inc. SVR4 Execution Support conforming entity, such application static linker, shall have requirements pertaining dynamic linking global offset tables procedure linkage tables shared objects EXTENDED conforming static linker, dynamic linker, high-level language processor (such compiler) shall implement following that conforms SVR4 ABI, conforming application that uses following shall that conforms SVR4 ABI: dynamic linking global offset tables PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information procedure linkage tables shared objects Machine Interface Processor Architecture Unlike SVR4 ABI, which only allows non-privileged PowerPC instructions, EABI-conforming application program shall allowed privileged optional instruction defined PowerPC architecture, with following exceptions. SVR4 ABI, Fixed-Point Load Store Multiple instructions Fixed Point Move Assist instructions shall allowed EABI-conforming Little Endian applications. Freescale Semiconductor, Inc. Data Representation Fundamental Types Unlike SVR4 ABI, alignment long double shall bytes (doubleword), although size long double shall bytes. Aggregates Unions Unlike SVR4 ABI, array, structure union containing long double shall start aligned byte boundary. However, SVR4 ABI, long double member within structure union shall start lowest available offset aligned byte boundary, size structure union with long double member shall multiple bytes. Function Calling Sequence Registers Unlike SVR4 ABI, GPR2 shall reserved system use, shall instead dedicated contain base sections named .sdata2 .sbss2, either section exists object file. base address such that every byte section within signed 16-bit offset that address. This analogous SVR4 ABI's GPR13 contain _SDA_BASE_, which base sections .sdata .sbss. routine shared object file shall GPR2. PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information Stack Frame Unlike SVR4 ABI, stack pointer (GPR1) shall maintain 8-byte alignment, from initialization through routine calls dynamic stack space allocation. Operating System Interface Unlike SVR4 ABI, EABI-conforming entity shall have operating system interface requirements. Freescale Semiconductor, Inc. Exception Interface Unlike SVR4 ABI, EABI-conforming entity shall have exception interface requirements. Process Initialization Unlike SVR4 ABI, EABI-conforming entity shall have process initialization requirements. Coding Examples Data Objects Analogous symbol _SDA_BASE_ described SVR4 ABI, symbol _SDA2_BASE_ shall have value such that address byte sections .sdata2 .sbss2 within signed 16-bit offset _SDA2_BASE_'s value (see "Special Sections" page 11). following discussion putting data sections .sdata, .sbss, .sdata2, .sbss2, .PPC.EMB.sdata0, .PPC.EMB.sbss0 makes distinction between defined external variables. source file, variable that stored stack either defined variable whose definition file (e.g., "int Var;" external variable that accessed code file defined file (e.g., "extern ExVar;"). high-level language processor, such compiler, shall have means (e.g., option) generating object file that conforms following rules: Sections .sdata, .sbss, .sdata2 shall contain least following: Entries those defined variables that globally visible scalars size fewer bytes whose values will changed outside program (which excludes variables that volatile). PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information Freescale Semiconductor, Inc. Every such defined variable whose initial value explicitly non-zero might changed program shall have .sdata entry that represents variable. Every such defined variable whose value initially might changed shall have .sbss entry .sdata entry that represents variable. object file generated intended part shared object file, every such variable whose value cannot changed program (such variable that const volatile) shall have .sdata2 entry that represents variable; otherwise, such constant variables shall have .sdata .sbss entries, appropriate. Entries produced static linker's resolution relocation types (see "Relocation Types" page 15). only external variables accessed generated code .sdata, .sbss, .sdata2, .sbss2, .PPC.EMB.sdata0, .PPC.EMB.sbss0 entries shall follows: External variables that scalars fewer bytes, whose values might changed program, whose values will changed outside program, shall accessed .sdata .sbss entries. address such variable will within 16-bit signed offset _SDA_BASE_, which shared object file same value _GLOBAL_OFFSET_TABLE_, otherwise loaded GPR13 conforming application. When object file part shared object file, external variables that scalars fewer bytes, whose values cannot changed program, whose values will changed outside program, shall accessed .sdata2 .sbss2 entries. shared object file, those constant external variables shall accessed .sdata .sbss entries. address such variable, when shared object file, will within 16bit signed offset _SDA2_BASE_, which loaded into GPR2 conforming application. PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information example, consider generating object file that will part shared object file from following code fragment: const short extern double extern const double extern extern extern extern double const float union my_union const volatile float struct my_struct volatile const float struct my_struct volatile const float i_sdata i_sdata2 i_sbss_or_sdata; s_sbss_or_sdata d_sdata_or_sbss; d_sdata2; Freescale Semiconductor, Inc. d_any_sdata_or_sbss[50]; f_any_sdata_or_sbss[200]; u_any_sdata_or_sbss; cvf_any_sdata_or_sbss; i_any_sdata[100] s_any_sdata vcf_any_sdata[5] static static i_any_sbss_or_sdata[100]; s_any_sbss_or_sdata; vcf_any_sbss_or_sdata[25]; code fragment defines globally visible variables, compiler when conforming rules above would place i_sdata .sdata, i_sdata2 .sdata2, i_sbss_or_sdata s_sbss_or_sdata either .sbss .sdata, while same time generating code that accesses external variable d_sdata_or_sbss using offset relative value _SDA_BASE_ (which GPR13), accesses d_sdata2 using offset relative _SDA2_BASE_ (which GPR2), does access other external variables .sdata, .sbss, .sdata2, .sbss2, .PPC.EMB.sdata0, .PPC.EMB.sbss0 entries. Except when conforming rules above, conforming compiler could generate code accessing external variables d_any_sdata_or_sbss, f_any_sdata_or_sbss, u_any_sdata_or_sbss, cvf_any_sdata_or_sbss relative value _SDA_BASE_, relative _SDA2_BASE_, relative address (Although section .sdata2 generally used hold only constant data.) Even when conforming rules above, long section size restrictions met, variables unnamed data .sdata, .sdata2 .PPC.EMB.sdata0, variables unnamed data that initially .sbss, .sbss2, .PPC.EMB.sbss0. conforming compiler might place i_any_sdata, s_any_sdata, vcf_any_sdata .sdata, .sdata2, .PPC.EMB.sdata0. compiler might able i_any_sbss_or_sdata, s_any_sbss_or_sdata, vcf_any_sbss_or_sdata .sbss, .sbss2, .PPC.EMB.sbss0, even explicitly initialize those variables with zeroes place them .sdata, .sdata2, .PPC.EMB.sdata0. Finally, when conforming rule above that restricts their placement, i_sdata, i_sdata2, i_sbss_or_sdata s_sbss_or_sdata could placed other appropriate sections (such putting i_sdata .PPC.EMB.sdata0). PowerPC EABI, Version More Information This Product, www.freescale.com Low-Level System Information Dynamic Stack Space Allocation Unlike SVR4 ABI, stack pointer (GPR1) shall maintain 8-byte alignment. DWARF Definition Unlike SVR4 ABI, which does define debug format, EABI adopts DWARF debugging information format EABI-conforming applications. EABI-conforming application that uses debug format shall either DWARF Version 1.1.0 DWARF Version 2.0.0. Freescale Semiconductor, Inc. WARNING: some future time, DWARF Version 1.1.0 EABI-conforming applications might disallowed. DWARF Register Number Mapping EABI-conforming application shall both DWARF Version 1.1.0 DWARF Version 2.0.0 DWARF register numbering specified SVR4 ABI. Address Class Codes EABI-conforming application shall both DWARF Version 1.1.0 DWARF Version 2.0.0 address class codes specified SVR4 ABI. PowerPC EABI, Version More Information This Product, www.freescale.com Object Files CHAPTER Object Files Freescale Semiconductor, Inc. Object File Processing EABI-conforming static linker shall accept input EABI-conforming SVR4-conforming relocatable object files, shall produce EABI-conforming object files. Header Machine Information header's e_flags member EABI-conforming object file shall have 0x80000000 set, defined name EF_PPC_EMB. PowerPC EABI, Version More Information This Product, www.freescale.com Object Files Sections Special Sections addition special sections SVR4 ABI, EABI-conforming object file shall allowed contain special sections described below. SVR4 reserved this document section names .sdata2, .sbss2, those beginning with string ".PPC.EMB.". special section .sdata2 intended hold initialized read-only small data that contribute program memory image. section can, however, used hold writable data. special section .sbss2 intended hold writable small data that contribute program memory image whose initial values sizes sections .sdata2 .sbss2 object file shall exceed bytes. file shall contain most section named .sdata2 most section named .sbss2. executable file, data items with local global scope placed into .sdata2 .sbss2. Sections .sdata2 .sbss2 shall appear shared object file. executable file contains .sdata2 section .sbss2 section, then static linker shall symbol _SDA2_BASE_ address such that address byte .sdata2 .sbss2 within 16-bit signed offset _SDA2_BASE_. executable file does contain .sdata2 .sbss2, then static linker shall _SDA2_BASE_ section header .sdata2: sh_type shall SHT_PROGBITS sh_flags shall either SHF_ALLOC SHF_ALLOC SHF_WRITE sh_link shall SHN_UNDEF sh_addralign shall maximum alignment required data item .sdata2 sh_info sh_entsize shall Freescale Semiconductor, Inc. static linker creates .sdata2 section that combines .sdata2 section whose sh_flags SHF_ALLOC with .sdata2 section whose sh_flags SHF_ALLOC SHF_WRITE, then resulting .sdata2 section's sh_flags value shall SHF_ALLOC SHF_WRITE. section header .sbss2: sh_type shall SHT_NOBITS sh_flags shall SHF_ALLOC SHF_WRITE sh_link shall SHN_UNDEF sh_addralign shall maximum alignment required data item .sbss2 sh_info sh_entsize shall PowerPC EABI, Version More Information This Product, www.freescale.com Object Files special section .PPC.EMB.sdata0 intended hold initialized small data that contribute program memory image whose addresses within 16-bit signed offset address special section .PPC.EMB.sbss0 intended hold small data that contribute program memory image, whose addresses within 16-bit signed offset address whose initial values sizes sections .PPC.EMB.sdata0 .PPC.EMB.sbss0 object file shall exceed bytes. file shall contain most section named .PPC.EMB.sdata0 most section named .PPC.EMB.sbss0. Data items with local global scope placed into .PPC.EMB.sdata0 .PPC.EMB.sbss0. Freescale Semiconductor, Inc. PowerPC EABI, Version More Information This Product, www.freescale.com Object Files section header .PPC.EMB.sdata0: sh_type shall SHT_PROGBITS sh_flags shall SHF_ALLOC SHF_WRITE sh_link shall SHN_UNDEF sh_addralign shall maximum alignment required data item .PPC.EMB.sdata0 sh_info sh_entsize shall section header .PPC.EMB.sbss0: Freescale Semiconductor, Inc. sh_type shall SHT_NOBITS sh_flags shall SHF_ALLOC SHF_WRITE sh_link shall SHN_UNDEF sh_addralign shall maximum alignment required data item .PPC.EMB.sbss0 sh_info sh_entsize shall special section .PPC.EMB.seginfo provides means naming providing additional information about segments (which described program header table entries). file shall contain most section named .PPC.EMB.seginfo. Often embedded applications copy initial values variables from start execution. facilitate this, static linker resolves references application variables their locations, relocates variable's initial values their locations. segment whose data (addressed program header entry's p_offset field) consists initial values copied locations application variables copy segment. purpose .PPC.EMB.seginfo define that segment copy thus initial values for, second segment. section header .PPC.EMB.seginfo: sh_type shall SHT_PROGBITS sh_link shall either SHN_UNDEF section header table index section type SHT_STRTAB whose string table contains null terminated names which entries .PPC.EMB.seginfo refer sh_entsize shall sh_flags, sh_addr, sh_info, sh_addralign shall data section .PPC.EMB.seginfo shall contain only 12-byte entries whose structure typedef struct Elf32_Half sg_indx; Elf32_Half sg_flags; Elf32_Word sg_name; Elf32_Word sg_info; Elf32_PPC_EMB_seginfo; PowerPC EABI, Version More Information This Product, www.freescale.com Object Files where: sg_indx shall index number segment program header table. Program header entries considered numbered from n-1, where number table entries. sg_flags shall mask flags. only allowed flag shall following: Flag Name PPC_EMB_SG_ROMCOPY Value 0x0001 Meaning segment indexed sg_indx copy segment indexed sg_info sg_name shall offset into string table where null terminated name segment Freescale Semiconductor, Inc. indexed sg_indx found. section index string table used sh_link field .PPC.EMB.seginfo's section header. sh_link SHN_UNDEF, then sg_name shall .PPC.EMB.seginfo entries. sg_name value shall mean that segment indexed sg_indx name. sg_info shall contain information that depends value sg_flags. flag PPC_EMB_SG_ROMCOPY sg_flags, then sg_info shall index number segment which segment indexed sg_indx copy; otherwise, value sg_info shall segment copy second segment (based information section .PPC.EMB.seginfo), then: first segment's p_type value shall PT_LOAD. second segment's p_type value shall PT_NULL. EXTENDED None relocation entries that dynamic linker might resolve shall refer location segment that copy another segment. section exists, .PPC.EMB.seginfo shall contain least entry need contain entry every segment. Entries shall same order their corresponding segments program header table (increasing values sg_indx). Only .PPC.EMB.seginfo entry shall allowed segment. static linker support creation section .PPC.EMB.seginfo, and, supports creation, support only segment naming, only copy segments, both. PowerPC EABI, Version More Information This Product, www.freescale.com Object Files Relocation Relocation Types static linker shall support SVR4 relocation types except those listed Table 4-1. EXTENDED static linker shall support SVR4 relocation types, including those Table 4-1, dynamic linker shall support SVR4 relocation types appropriate dynamic linking. Freescale Semiconductor, Inc. TABLE 4-1. SVR4 Relocation Types Extended Conformance R_PPC_GOT16 R_PPC_GOT16_LO R_PPC_GOT16_HI R_PPC_GOT16_HA R_PPC_PLT24 R_PPC_COPY R_PPC_GLOB_DAT R_PPC_JMP_SLOT R_PPC_LOCAL24PC R_PPC_PLT32 R_PPC_PLTREL32 R_PPC_PLT16_LO R_PPC_PLT16_HI R_PPC_PLT16_HA Table lists relocation types defined EABI. heading Check denotes whether link shall fail value computed does allocated bits. static linker shall support relocation types Table shall accept relocation entry whose relocation type defined either Table SVR4 ABI. EXTENDED dynamic linker shall process relocation entry whose relocation type defined either Table SVR4 ABI. PowerPC EABI, Version More Information This Product, www.freescale.com Object Files relocatable fields EABI relocation types shall have alignment restrictions. Fields Table shall have following meanings (since fields unaligned, names start with `u'): uword32 ulow21 uhalf16 32-bit field occupying bytes 21-bit field occupying least significant bits 24-bit field pointed relocation entry 16-bit field occupying bytes (e.g., Immediate instruction's immediate field) Calculations Table following symbols: Freescale Semiconductor, Inc. relocation entry's r_addend field value address (value) symbol whose index relocation entry's r_info field offset from _SDA_BASE_ where .sdata static linker placed address symbol whose index r_info. R_PPC_EMB_SDAI16 description below. offset from _SDA2_BASE_ where .sdata2 static linker placed address symbol whose index r_info. R_PPC_EMB_SDA2I16 description below. offset symbol whose index r_info from start that symbol's containing section address start section containing symbol whose index r_info Calculations Table following notation: denote 32-bit modulus addition subtraction, respectively. ">>" denotes arith- metic right shifting (shifting with sign copying) value left operand number bits given right operand. relocation types whose names contain string "14" string "16", upper bits value computed before shifting must same. #hi(value) #lo(value) denote most least significant bits, respectively, value. That #lo(x) 0xFFFF) #hi(x) 0xFFFF). #ha(value) compensates treating #lo() signed number. #ha(x) (((x 0x1)) 0xFFFF). PowerPC EABI, Version More Information This Product, www.freescale.com Object Files TABLE 4-2. EABI Relocation Types Value Field uword32 uhalf16 uhalf16 uhalf16 uhalf16 uhalf16 uhalf16 uhalf16 ulow21 none uhalf16 uhalf16 uhalf16 uhalf16 uword32 uhalf16 Check Calculation #lo(A #hi(A #ha(A _SDA2_BASE_ below below #lo(W #hi(W #ha(W below below Relocation Type R_PPC_EMB_NADDR32 R_PPC_EMB_NADDR16 R_PPC_EMB_NADDR16_LO R_PPC_EMB_NADDR16_HI R_PPC_EMB_NADDR16_HA R_PPC_EMB_SDAI16 R_PPC_EMB_SDA2I16 R_PPC_EMB_SDA2REL R_PPC_EMB_SDA21 R_PPC_EMB_MRKREF R_PPC_EMB_RELSEC16 R_PPC_EMB_RELST_LO R_PPC_EMB_RELST_HI R_PPC_EMB_RELST_HA R_PPC_EMB_BIT_FLD R_PPC_EMB_RELSDA R_PPC_EMB_SDAI16 Freescale Semiconductor, Inc. This instructs static linker create 4-byte, word aligned, entry .sdata section containing address symbol whose index relocation entry's r_info field. most such implicit .sdata entry shall created symbol link, only executable shared object file. addition, value used relocation calculation shall offset from _SDA_BASE_ symbol's implicit entry. relocation entry's r_addend field value shall This instructs static linker create 4-byte, word aligned, entry .sdata2 section containing address symbol whose index r_info. most such implicit .sdata2 entry shall created symbol link, only executable file. addition, value used relocation calculation shall offset from _SDA2_BASE_ symbol's implicit entry. relocation entry's r_addend field value shall most significant bits address pointed relocation entry shall left unchanged. symbol whose index r_info R_PPC_EMB_SDA2I16 R_PPC_EMB_SDA21 PowerPC EABI, Version More Information This Product, www.freescale.com Object Files contained .sdata .sbss, then static linker shall place next most significant bits value (for GPR13); symbol .sdata2 .sbss2, then linker shall place those bits value (for GPR2); symbol .PPC.EMB.sdata0 .PPC.EMB.sbss0, then linker shall place those bits value (for GPR0); otherwise, link shall fail. least significant bits this field shall address symbol plus relocation entry's r_addend value minus appropriate base symbol's section: _SDA_BASE_ symbol .sdata .sbss, _SDA2_BASE_ symbol .sdata2 .sbss2, symbol .PPC.EMB.sdata0 .PPC.EMB.sbss0. Freescale Semiconductor, Inc. R_PPC_EMB_MRKREF symbol whose index r_info shall different section from section associated with relocation entry itself. relocation entry's r_offset r_addend fields shall ignored. Unlike other relocation types, static linker shall apply relocation action location because this type. This relocation type used prevent static linker that does section garbage collecting from deleting important otherwise unreferenced section. most significant bits relocation entry's r_addend field shall value between representing Endian position within entry's 32-bit location (e.g., means sixth most significant bit). least significant bits r_addend shall value between representing length bits. position plus length shall exceed static linker shall replace bits starting position specified length with value symbol, treated signed entity. static linker shall 16-bits address pointed relocation entry address symbol whose index r_info plus value r_addend minus appropriate base section containing symbol: _SDA_BASE_ symbol .sdata .sbss, _SDA2_BASE_ symbol .sdata2 .sbss2, symbol .PPC.EMB.sdata0 .PPC.EMB.sbss0. symbol those sections, link shall fail. R_PPC_EMB_BIT_FLD R_PPC_EMB_RELSDA PowerPC EABI, Version More Information This Product, www.freescale.com Program Loading Dynamic Linking CHAPTER Program Loading Dynamic Linking Freescale Semiconductor, Inc. Program Loading Unlike SVR4 ABI, EABI-conforming entity shall have program loading requirements. Program Interpreter Unlike SVR4 ABI, EABI-conforming entity shall have program interpreter requirements. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries CHAPTER Libraries Freescale Semiconductor, Inc. SVR4 Library Routines chapter "LIBRARIES" System Application Binary Interface, PowerPC Processor Supplement describes optional required routines SVR4 libsys libc libraries. EABI-conforming library routine whose name matches name routine described chapter "LIBRARIES" (_va_arg, _dtou, routines Tables through 6-5) shall have interface semantics described SVR4 ABI. routine Table 6-1, 6-2, 6-3, 6-4, supported, then other routines same table shall supported. TABLE 6-1. _q_add _q_dtoq _q_fle _q_mul _q_qtos _q_sub SVR4 libsys 16-Byte Float Routines _q_cmp _q_feq _q_flt _q_neg _q_qtou _q_utoq _q_cmpe _q_fge _q_fne _q_qtod _q_sqrt _q_div _q_fgt _q_itoq _q_qtoi _q_stoq PowerPC EABI, Version More Information This Product, www.freescale.com Libraries TABLE 6-2. SVR4 libsys 8-Byte Integer Arithmetic Routines _dtoll _urem64 _dtoull _rem64 _div64 _udiv64 TABLE 6-3. SVR4 libsys 8-Byte Integer to/from 16-Byte Float Routines _q_qtoll _q_qtoull _q_ulltoq Freescale Semiconductor, Inc. _q_lltoq TABLE 6-4. SVR4 libc 8-Byte Integer to/from String Routines lltostr wstoll strtoll strtoull atoll ulltostr TABLE 6-5. SVR4 libc 8-Byte Integer Arithmetic Routines lldiv llabs Software Floating Point Emulation Support Routines high-level language processor, such compiler, have means achieving floating point arithmetic, comparisons, loads, stores generating software floating point emulation (sfpe) code, rather than using PowerPC floating point instructions. language processor that supports sfpe code support conversions between floating point 64-bit integer (e.g., long long) data types. sfpe code: Floating point registers, FPSCR, PowerPC register bits that could cause floating point exception shall accessed. Floating point single precision scalars shall passed same returned same have same alignment long scalars. Single precision members aggregates shall have size alignment long members. Floating point double precision scalars shall passed same returned same have same alignment long long scalars. Double precision members aggregates shall have size alignment long long members. caller function that takes variable argument list shall condition register since arguments passed floating-point registers. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries following restrictions shall apply each sfpe support routines below, which intended called application sfpe code: routines shall sfpe code. E.g., float double descriptions mean sfpe single preci- sion double precision scalars, respectively, floating point registers will accessed. Floating point arithmetic comparisons routines shall IEEE conformant. Floating point arithmetic comparisons routines shall performed PowerPC floating point exceptions have been disabled shall raise floating point exceptions. Conformant library support sfpe code shall include routines Table (routine interfaces shown function prototypes). TABLE 6-6. Freescale Semiconductor, Inc. SFPE Library Routines _fp_round _d_add _d_dtof _d_feq _d_flt _d_neg _f_add _f_feq _f_flt _f_ftoq _f_neg _d_cmp _d_dtoi _d_fge _d_fne _d_qtod _f_cmp _f_fge _f_fne _f_ftou _f_qtof _d_cmpe _d_dtoq _d_fgt _d_itod _d_sub _f_cmpe _f_fgt _f_ftod _f_itof _f_sub _d_div _d_dtou _d_fle _d_mul _d_utod _f_div _f_fle _f_ftoi _f_mul _f_utof _fp_round(int rounding_mode) This function shall rounding mode sfpe library routines. rounding_mode then round nearest shall requested; rounding_mode shall request round toward rounding_mode shall request round toward positive infinity; rounding_mode shall request round toward negative infinity. This function shall return resulting rounding mode round nearest, etc.) which shall rounding_mode that rounding mode supported sfpe library routines. Only round nearest (this function returns shall required conformance. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries double _d_add(double double This function shall return computed double precision. _d_cmp(double double This function shall perform unordered comparison double precision values shall return integer value that indicates their relative ordering: Relation equal less than Value Freescale Semiconductor, Inc. greater than unordered with respect _d_cmpe(double double This function shall perform ordered comparison double precision values shall return integer value that indicates their relative ordering: Relation equal less than greater than double _d_div(double double Value This function shall return computed double precision. float _d_dtof(double This function shall convert double precision value single precision shall return single precision value. _d_dtoi(double This function shall convert double precision value signed integer truncating fractional part shall return signed integer value. long double _d_dtoq(double This function shall convert double precision value extended precision shall return extended precision value. unsigned _d_dtou(double This function shall convert double precision value unsigned integer truncating fractional part shall return unsigned integer value. _d_feq(double double This function shall perform unordered comparison double precision values shall return they equal, otherwise. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries _d_fge(double double This function shall perform ordered comparison double precision values shall return greater than equal otherwise. _d_fgt(double double This function shall perform ordered comparison double precision values shall return greater than otherwise. _d_fle(double double This function shall perform ordered comparison double precision values shall return less than equal otherwise. Freescale Semiconductor, Inc. _d_flt(double double This function shall perform ordered comparison double precision values shall return less than otherwise. _d_fne(double double This function shall perform unordered comparison double precision values shall return they unordered equal, otherwise. double _d_itod(int This function shall convert signed integer value double precision shall return double precision value. double _d_mul(double double This function shall return computed double precision. double _d_neg (double This function shall return double _d_qtod(const long double This function shall convert extended precision value double precision shall return double precision value. double _d_sub(double double This function shall return computed double precision. double _d_utod(unsigned This function shall convert unsigned integer value double precision shall return double precision value. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries float _f_add(float float This function shall return computed single precision. _f_cmp(float float This function shall perform unordered comparison single precision values shall return integer value that indicates their relative ordering: Relation equal less than Value Freescale Semiconductor, Inc. greater than unordered with respect _f_cmpe(float float This function shall perform ordered comparison single precision values shall return integer value that indicates their relative ordering: Relation equal less than greater than float _f_div(float float Value This function shall return computed single precision. _f_feq(float float This function shall perform unordered comparison single precision values shall return they equal, otherwise. _f_fge(float float This function shall perform ordered comparison single precision values shall return greater than equal otherwise. _f_fgt(float float This function shall perform ordered comparison single precision values shall return greater than otherwise. _f_fle(float float This function shall perform ordered comparison single precision values shall return less than equal otherwise. _f_flt(float float This function shall perform ordered comparison single precision values shall return less than otherwise. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries _f_fne(float float This function shall perform unordered comparison single precision values shall return they unordered equal, otherwise. double _f_ftod(float This function shall convert single precision value double precision shall return double precision value. _f_ftoi(float This function shall convert single precision value signed integer truncating fractional part shall return signed integer value. Freescale Semiconductor, Inc. long double _f_ftoq(float This function shall convert single precision value extended precision shall return extended precision value. unsigned _f_ftou(float This function shall convert single precision value unsigned integer truncating fractional part shall return unsigned integer value. float _f_itof(int This function shall convert signed integer value single precision shall return single precision value. float _f_mul(float float This function shall return computed single precision. float _f_neg (float This function shall return float _f_sub(float float This function shall return computed single precision. float _f_utof(unsigned This function shall convert unsigned integer value single precision shall return single precision value. PowerPC EABI, Version More Information This Product, www.freescale.com Libraries Conformant library support sfpe code include routines Table 6-7, which convert between floating point 64-bit integer data types (e.g., long long), shall include them included. TABLE 6-7. SFPE Library Routines Supporting 64-bit Integer Data Types _d_dtoull _f_ftoull _d_lltod _f_lltof _d_ulltod _f_ulltof _d_dtoll _f_ftoll Freescale Semiconductor, Inc. long long _d_dtoll(double This function shall convert double precision value signed long long truncating fractional part shall return signed long long value. unsigned long long _d_dtoull(double This function shall convert double precision value unsigned long long truncating fractional part shall return unsigned long long value. double _d_lltod(long long This function shall convert signed long long value double precision shall return double precision value. double _d_ulltod(unsigned long long This function shall convert unsigned long long value double precision shall return double precision value. long long _f_ftoll(float This function shall convert single precision value signed long long truncating fractional part shall return signed long long value. unsigned long long _f_ftoull(float This function shall convert single precision value unsigned long long truncating fractional part shall return unsigned long long value. float _f_lltof(long long This function shall convert signed long long value single precision shall return single precision value. float _f_ulltof(unsigned long long This function shall convert unsigned long long value single precision shall return single precision value. PowerPC EABI, Version More Information This Product, www.freescale.com EABI Summary APPENDIX EABI Summary Table lists topics that addressed differently EABI SVR4 ABI. Table lists topics EABI that SVR4 ABI. Table lists additional requirements EABI extended conformance over EABI base conformance. Table lists EABI topics which support optional. Table lists SVR4 topics which there EABI requirements. Page numbers refer EABI pages. Freescale Semiconductor, Inc. TABLE A-1. Different EABI SVR4 EABI privileged optional instructions allowed 8-byte aligned starts 8-byte aligned dedicated pointer .sdata2 .sbss2 sections multiple (stack 8-byte aligned) some required capabilities SVR4 privileged optional instructions allowed 16-byte aligned starts 16-byte aligned reserved system multiple (stack 16-byte aligned) only optional capabilities Page Topic PowerPC instruction long double scalar struct/union containing long double GPR2 usage stack pointer value language processor (e.g., compiler) support .sdata .sbss sections dynamic stack allocation (e.g., alloca) SVR4 relocation types 8-byte aligned linker support certain types optional, except extended conformance (See Table A-3.) support optional (See Table A-4.) 16-byte aligned linker support types required libsys libc library routines some required some optional routines PowerPC EABI, Version More Information This Product, www.freescale.com EABI Summary TABLE A-2. EABI Unique Topic Description value within 16-bit signed offset .sdata2/.sbss2 bytes DWARF Version 1.1.0 DWARF Version 2.0.0 small data area (64K fewer bytes) pointed GPR2; some required language processor support small data area within 16-bit signed offset address section created static linker name segments declare segment copy second; support creation optional, creating linker support just naming, just copies, both (See Table A-4.) several required relocation types optionally supported language processor code generation restrictions library routines achieving floating point without using native PowerPC floating point; sfpe library support requires single double precision routines, and, 64-bit integer routine supported, such routines must supported (See Table A-4.) Page symbol _SDA2_BASE_ debug format .sdata2 .sbss2 sections .PPC.EMB.sdata0 .PPC.EMB.sbss0 sections .PPC.EMB.seginfo Freescale Semiconductor, Inc. EABI relocation types software floating point emulation (sfpe) TABLE A-3. EABI Extended Conformance Page Description dynamic linking SVR4 global offset tables SVR4 procedure linkage tables SVR4 shared objects SVR4 static linker supporting optional copy segments ensures that relocation entries resolved dynamic linkers refer locations copy segment linker support SVR4, well EABI, relocation types PowerPC EABI, Version More Information This Product, www.freescale.com EABI Summary TABLE A-4. EABI Optional Support Description static linker creation .PPC.EMB.seginfo, whether linker supporting creation allows only segment naming, only copy segments, both. language processor (e.g. compiler) generation software floating point emulation (sfpe) code, whether such generation includes conversions between floating point 64-bit integer data types inclusion libraries that support sfpe code routines that convert between floating point 64-bit integer data types Page Freescale Semiconductor, Inc. TABLE A-5. SVR4 Unique exception interface operating system interface process initialization program interpreter program loading software distribution installation PowerPC EABI, Version More Information This Product, www.freescale.com Other recent searchesZXTN619MA - ZXTN619MA ZXTN619MA Datasheet PNZ158 - PNZ158 PNZ158 Datasheet MAS9090B - MAS9090B MAS9090B Datasheet L35ESD12VCB2 - L35ESD12VCB2 L35ESD12VCB2 Datasheet HL01RZC - HL01RZC HL01RZC Datasheet GRM2197U1H273J - GRM2197U1H273J GRM2197U1H273J Datasheet DL129 - DL129 DL129 Datasheet
Privacy Policy | Disclaimer |