NXP MSC8126, MSC7116, MSC7119, MSC8102, MSC8113, MSC8122 Reference guide

  • Hello! I am an AI chatbot trained to assist you with the NXP MSC8126 Reference guide. I’ve already reviewed the document and can help you find the information you need or explain it in simple terms. Just ask your questions, and providing more details will help me assist you more effectively!
SC100 Application Binary Interface
MNSC100ABI/D
Rev. 2.0, 06/2002
SC100 Application Binary Interface
MNSC100ABI/D
Rev. 2.0, 06/2002
This document contains information on a new product. Specifications and information herein are subject to change
without notice.
LICENSOR is defined as either Motorola, Inc. or Agere Systems Inc., whichever company distributed this document to
LICENSEE. LICENSOR reserves the right to make changes without further notice to any products included and
covered hereby. LICENSOR makes no warranty, representation or guarantee regarding the suitability of its products
for any particular purpose, nor does LICENSOR assume any liability arising out of the application or use of any product
or circuit, and specifically disclaims any and all liability, including without limitation incidental, consequential, reliance,
exemplary, or any other similar such damages, by way of illustration but not limitation, such as, loss of profits and loss
of business opportunity. “Typical” parameters which may be provided in LICENSOR data sheets and/or specifications
can and do vary in different applications and actual performance may vary over time. All operating parameters,
including “Typicals” must be validated for each customer application by customer's technical experts. LICENSOR does
not convey any license under its patent rights nor the rights of others. LICENSOR products are not designed, intended,
or authorized for use as components in systems intended for surgical implant into the body, or other applications
intended to support life, or for any other application in which the failure of the LICENSOR product could create a
situation where personal injury or death may occur. Should Buyer purchase or use LICENSOR products for any such
unintended or unauthorized application, Buyer shall indemnify and hold LICENSOR and its officers, employees,
subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable
attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended
or unauthorized use, even if such claim alleges that LICENSOR was negligent regarding the design or manufacture of
the part.
Motorola and the Motorola DigitalDNA insignia are registered trademarks of Motorola, Inc. Motorola, Inc. is an Equal
Opportunity/Affirmative Action Employer. Agere, Agere Systems, and the Agere Systems insignia are trademarks of
Agere Systems Inc. Agere Systems Inc. is an Equal Opportunity/Affirmative Action Employer.
StarCore is a registered trademark of Motorola, Inc. It is used by Agere Systems with the authorization of Motorola.
All other trade names, trademarks, and registered trademarks are the property of their respective owners.
© Copyright Agere Systems Inc., 2002. All rights reserved.
© Copyright Motorola Inc., 2002. All rights reserved.
SC100 Application Binary Interface iii
Chapter 1
Introduction
1.1 Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1
1.2 Conformance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
1.3 References. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
1.4 Revision History. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-3
1.5 Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-4
Chapter 2
Low-Level Binary Interface
2.1 Core Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-1
2.2 Endian Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
2.3 Fundamental Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
2.4 Aggregates and Unions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-6
2.5 Bit Fields. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-8
2.6 Function Calling Sequence. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10
2.6.1 Argument Passing and Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-10
2.6.2 Variable Argument Lists. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-12
2.6.3 Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-12
2.6.4 Stack Frame Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-13
2.6.5 Stack Unwinding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-14
2.6.6 Register Saving and Restoring Functions. . . . . . . . . . . . . . . . . . . . . . . . . . . .2-16
2.6.7 setjmp and longjmp Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-17
2.6.8 Frame and Global Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-17
2.6.9 Dynamic Memory Allocation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-17
2.6.10 Hardware Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-17
2.7 Function Call Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-18
2.8 Address Modifier Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-18
2.9 Saturation Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-18
2.10 Data Addressing Models. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-18
Chapter 3
High-Level Languages Issues
3.1 C Preprocessor Predefines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-1
3.2 C Name Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-1
3.3 C System Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2
3.4 Fractional Arithmetic Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2
Table of Contents
iv SC100 Application Binary Interface
3.5 Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
3.5.1 Compiler Assist Libraries. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
3.5.2 Floating-Point Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-4
3.5.3 Integer Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-10
3.5.4 Optional Integer Routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-11
3.6 Function Argument and Return Type Checking in C. . . . . . . . . . . . . . . . . . . . . .3-12
3.6.1 Signature Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-12
3.6.2 Return Value. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-13
3.6.3 Using Signature Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-13
3.7 Access to Architectural Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-14
Chapter 4
Object File Format
4.1 Interface Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-1
4.2 The ELF Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-2
4.3 Sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-3
4.4 Special Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-5
4.5 Relocation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-6
4.5.1 Relocation Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-7
4.5.2 Relocation Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-17
4.5.3 Instruction Address vs. VLES Address . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-18
4.6 NOTE Section. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-19
4.7 Program Headers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-21
4.8 Debugging Information. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-22
4.8.1 DWARF Register Number Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4-22
Chapter 5
Assembler Syntax and Directives
5.1 Assembler Significant Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-1
5.2 Assembler Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-2
5.3 Assembler Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-3
5.3.1 Symbol Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-3
5.3.2 Strings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-3
5.3.3 Source Statement Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-4
5.3.3.1 Instruction Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-5
5.3.3.2 Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-5
5.3.3.3 Operation Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-5
5.3.3.4 Operand Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-6
5.3.3.5 Comment Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-6
5.4 Rule Checking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-6
SC100 Application Binary Interface v
2-1 Mapping of C Data Types to SC100. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4
2-2 Mapping of C Fractional Types to SC100 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-5
2-3 C Bit Field Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-8
2-4 Register Usage in the Calling Convention . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11
3-1 Predefined Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1
3-2 Required Intrinsics for Fractional Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2
3-3 Floating-Point Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-5
3-4 Integer Routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10
3-5 Optional Integer Routines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11
3-6 Italicized Fields in the Symbol Names. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-12
3-7 Basetype Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13
3-8 Intrinsics for Access to Architectural Features. . . . . . . . . . . . . . . . . . . . . . . . . 3-14
4-1 SC100 ELF Sections. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4
4-2 Relocation Type Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-8
4-3 Relocation Stack Operations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-17
4-4 SC100 Register Number Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-22
5-1 Assembler Significant Characters. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-1
5-2 Assembler Directives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
List of Tables
vi SC100 Application Binary Interface
SC100 Application Binary Interface vii
2-1 Stack Frame Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-13
4-1 Object File Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-1
4-2 Vendor Identification Note Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20
4-3 User (Application-Specific) Note Format. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-20
5-1 Basic Source Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4
List of Figures
viii SC100 Application Binary Interface
SC100 Application Binary Interface ix
2-1 Word Bit and Byte Numbering. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2
2-2 Long Word Bit and Byte Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
2-3 Double-Long Word Bit and Byte Numbering . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3
2-4 Structure With Internal and Tail Padding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
2-5 union Allocation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-7
2-6 Bit Field Alignment and Padding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
2-7 Unnamed and Zero-Width Bit Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
2-8 Function Calls and Allocation of Arguments. . . . . . . . . . . . . . . . . . . . . . . . . . 2-11
2-9 Generating Stack Unwinding Symbols in Assembly Code . . . . . . . . . . . . . . . 2-15
2-10 Saving and Restoring Functions Usage Example. . . . . . . . . . . . . . . . . . . . . . . 2-16
2-11 Memory Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-19
2-12 Small and Tiny Memory Mode Instruction . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-19
4-1 ELF Header Structure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4-2 SC100 Specifics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
4-3 Definition of Macros for Accessing e_flag Parts . . . . . . . . . . . . . . . . . . . . . . . 4-3
4-4 Section Header Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3
4-5 Definition of Opcode IDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
4-6 Definition of Macros for Accessing Opcode Parts. . . . . . . . . . . . . . . . . . . . . . . 4-5
4-7 Relocation Entry Defined with Elf32_Rela . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
4-8 Program Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-21
5-1 Single-Line Instruction Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
5-2 Multiple-Line Instruction Group (SC140) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
List of Examples
x SC100 Application Binary Interface
SC100 Application Binary Interface 1-1
Chapter 1
Introduction
The SC100 application binary interface (ABI) defines a set of standards intended to ensure interoperability
between conforming software components, such as, compilers, assemblers, linkers, debuggers, and
assembly language code. These standards cover run-time aspects as well as object formats to be used by
compatible tool chains from the StarCore Technology Center, Agere Systems, Motorola, and third party
tools developers.
A benefit of this standard definition is interoperability of conforming tools. This allows users to select the
best tool for each phase of the application development cycle, rather than being constrained to using an
entire tool chain. Another benefit is compatibility of conforming libraries. Programmers can build
compatible binary libraries and assembly code libraries, and be assured of their continued compatibility
over time.
1.1 Overview
This ABI addresses the following types of standards:
Low level run-time binary interface standards
Processor-specific binary interface (the instruction set and representation of fundamental data
types)
Function calling conventions (how arguments are passed and results are returned, how registers
are assigned, and how the calling stack is organized)
Source-level standards
C language (preprocessor predefines, name mapping, and intrinsics)
Assembler syntax and directives
Object-file binary interface standards
Header convention
Section layout
Relocation information format
Debugging information format
Library standards
Compiler run-time libraries (integer routines and floating-point routines)
1-2 SC100 Application Binary Interface
Introduction
1.2 Conformance
Features defined in this ABI are mandatory unless specifically stated otherwise. Optional features, if
implemented, must conform to the ABI.
1.3 References
The following standards provide useful reference information:
Tool Interface Standard (TIS) Executable and Linking Format (ELF) Specification, Version 1.1,
UNIX Systems Laboratories, Portable Formats Specification, 1995
DWARF Debugging Information Format, Revision: Version 2.0.0, Industry Review Draft, UNIX
International, Program Languages SIG, July 27, 1993
ANSI/IEEE Std 754-1985, IEEE standard for binary floating-point arithmetic data types
ISO/IEC 9899:1999(E), International Standard - Programming Languages—C, 2nd Edition,
International Organization for Standardization, December 1, 1999
The following StarCore documents are included by reference into this ABI. With the exception of the
design specification listed below, these documents are available through the StarCore web site at
http://www.starcore-dsp.com.
SC100 Assembly Language Tools Users Manual (MNSC100ALT/D)
Describes the SC100 assembler syntax and directives listed in Chapter 5
of this ABI.
SC110 DSP Core Reference Manual (MNSC110CORE/D)
Describes the SC110 core architecture and programming model, including the SC110 instruction set.
SC140 DSP Core Reference Manual (MNSC140CORE/D)
Describes the SC140 core architecture and programming model, including the SC140 instruction set.
Support in the Assembler and Simulator Required for Correct Reporting of SC100 Restrictions
(design specification)
Defines which instruction set programming rules must be validated by the assembler and simulator,
and specifies the identifier that must be included in the error or warning message that is generated
when a given rule is violated. This document is an internal design specification that is available to
third parties under a non-disclosure agreement with the StarCore Technology Center.
The SC100 generation of core architectures currently includes two cores: the StarCore SC110 and the
StarCore SC140. As future cores become available, their respective core reference manuals should also be
considered part of this ABI.
Revision History
SC100 Application Binary Interface 1-3
1.4 Revision History
This Rev. 2.0 of the ABI supersedes the previous edition, Rev. 1.8, dated 04/2000. Major changes from the
previous edition include:
Chapter 2,
Low-Level Binary Interface.
Updated discussion of fundamental data types, aggregates, and bit fields, with little-endian and
big-endian differences noted.
Added sections on stack unwinding, register saving and restoring functions, function call modes,
address modifier modes, saturation mode, and data addressing models.
Removed the section, Interrupt Handlers.
Updated the calling conventions with these notable changes:
If the first argument is a
long long (where implemented), double, or long double, it is
passed in D0 and D1, as if it were first stored in an 8-byte aligned memory area and then the
low-addressed word were loaded into D0 and the high-addressed word into D1.
Each argument on the stack is passed in the byte order appropriate for the endian mode.
A function with a variable number of arguments passes the last fixed argument and all subsequent
variable arguments on the stack.
An argument that is 8-byte aligned is passed 8-byte aligned on the stack. All other arguments are
passed 4-byte aligned on the stack.
Arguments are passed on the stack, in order, from higher addresses to lower addresses. Each
argument on the stack is passed in the byte order appropriate for the endian mode.
A
long long, double, or long double return value is returned in D0 and D1, as if it were first
stored in an 8-byte aligned memory area and then the low-addressed word were loaded into D0
and the high-addressed word into D1.
A function returning a structure or union of any size receives in R2 the address of space in which
to return the structure or union. The function does not return that address in R2.
The extension registers, D6.e and D7.e, are callee saved; the remaining extension registers are
caller saved.
The MCTL register is caller saved.
A compiler assumes the rounding mode default is twos complement rounding, and the scaling
mode default is no scaling.
Chapter 3,
High-Level Languages Issues.
Added new C preprocessor predefines:
__SC110__, __SC140__, __LITTLE_ENDIAN__, and
__BIG_ENDIAN__.
Removed requirement for support of C in-line assembly syntax.
Changed names of existing floating-point routines and integer routines, and added
double and long
long routines. Also added descriptions of all routines.
Added new section on intrinsics for accessing architectural features.
Chapter 4,
Object File Format.
Updated the list of SC100 ELF sections.
Added sections on SC100 special sections and debugging information.
Replaced the relocation section with a new relocation scheme.
1-4 SC100 Application Binary Interface
Introduction
Removed original Chapter 5, Endian Support. This revision of the ABI incorporates endian information
in individual sections, as appropriate, throughout the document.
Chapter 5,
Assembler Syntax and Directives (originally Chapter 6 in Rev 1.8).
Removed requirement for support of object file control directives, in addition to the individual
directives MODE, DUPA, DUPC, DUPF, EXITM, MACLIB, MACRO, and PMACRO.
Added requirement for support of ELSE and FALIGN directives.
Added requirements for checking SC100 programming rules.
1.5 Acknowledgements
The SC100 Application Binary Interface team included representatives from the following companies:
We gratefully thank all participants for devoting their time and effort to create this standard.
Agere Systems Inc. Metrowerks, Inc.
Altium Limited Motorola, Inc.
Green Hills Software, Inc. WindRiver Systems, Inc.
Lineo, Inc.
SC100 Application Binary Interface 2-1
Chapter 2
Low-Level Binary Interface
This chapter defines low-level system standards for the SC100 generation of DSP cores, including:
Processor-specific binary interface (the instruction set and representation of fundamental data types)
Function calling conventions (how arguments are passed and results are returned, how registers are
assigned, and how the calling stack is organized)
2.1 Core Architecture
The SC100 generation of core architectures currently includes three cores: the StarCore SC110, the
StarCore SC140, and the StarCore SC140E. The architecture and instruction set for each core is defined in
that cores respective reference manual, as listed in Section 1.3,
References. Programs written for these
cores use their instruction sets, as well as the instruction encodings and semantics of their architecture.
Programmers may assume that the instructions for these cores work as documented. Note that while an
ABI-conforming SC110 program will run on an ABI-conforming SC140 processor, the reverse is not
always true.
To conform to the ABI, the processor must execute the architectures instructions and produce the
expected results. This ABI does not define requirements for the services provided by an operating system,
nor does it specify what instructions must be implemented in hardware. A software emulation of the
architecture could conform to the ABI.
Programs that use non-SC100 instructions or capabilities do not conform to the SC100 ABI. Such
programs may produce unexpected results when run on machines lacking the non-SC100 capability.
2-2 SC100 Application Binary Interface
Low-Level Binary Interface
2.2 Endian Support
The SC100 architecture supports both big-endian and little-endian implementations. This standard defines
a binary interface for each. Note that program binaries that run on a big-endian implementation are not
portable to a little-endian implementation, and vice versa. The same applies to the data generated by these
programs, as well as to the layout of data used by these programs (such as the layout of data generated by
compilation tools).
The bytes that form the supported data types are ordered in memory according to the following:
In a big-endian implementation, the most significant byte (MSB) is located in the lowest address
(byte 0).
In a little-endian implementation, the least significant byte (LSB) is located in the lowest address
(byte 0).
2.3 Fundamental Data Types
The SC100 architecture defines the following data types:
An 8-bit byte
A 16-bit word
A 32-bit long word
A 64-bit double-long word
The following examples illustrate the bit and byte numbering for these data types.
Example 2-1. Word Bit and Byte Numbering
bit 15 8 7 0
byte 1
MSB LSB
byte 0
Little-Endian
bit 15 8 7 0
byte 0
MSB LSB
byte 1
Big-Endian
Fundamental Data Types
SC100 Application Binary Interface 2-3
Example 2-2. Long Word Bit and Byte Numbering
Example 2-3. Double-Long Word Bit and Byte Numbering
bit 31 24 23 16 15 8 7 0
byte 3
MSB LSB
byte 0
Little-Endian
bit 31 24 23 16 15 8 7 0
byte 0
MSB LSB
byte 3
Big-Endian
bit 31 24 23 16 15 8 7 0
Little-Endian
byte 3
LSB
byte 0
bit 63 56 55 48 47 40 39 32
byte 7
MSB
byte 4
bit 63 56 55 48 47 40 39 32
Big-Endian
byte 0
MSB
byte 3
bit 31 24 23 16 15 8 7 0
byte 4
LSB
byte 7
2-4 SC100 Application Binary Interface
Low-Level Binary Interface
Table 2-1 shows the mapping between these fundamental data types and the C language data types. Note
that fundamental data is always naturally aligned; that is, a double-long word is 8-byte aligned, a long
word is 4-byte aligned, and a word is 2-byte aligned.
Table 2-1. Mapping of C Data Types to SC100
Type C Type
Size
(bits)
Align
(bits)
Limits SC100
_Bool
1
Notes:
1. This data type is specified in the latest ISO C definition (ISO/IEC 9899:1999). Support of this data type is
optional. If used, this data type must be implemented with the size and alignment shown.
8 8 0 .. 1 signed byte
Character char
88-2
7
.. 2
7
1 signed byte
signed char
unsigned char 880 .. 2
8
1 unsigned byte
short
16 16 -2
15
.. 2
15
1 signed word
signed short
unsigned short 16 16 0 .. 2
16
1 unsigned word
Integral int
32 32 -2
31
.. 2
31
1 signed long word
signed int
enum
long
signed long
unsigned int
32 32 0 .. 2
32
1 unsigned long word
unsigned long
long long
1
64 64 -2
63
.. 2
63
1 signed double-long word
signed long long
1
unsigned long long
1
64 64 0 .. 2
64
1 unsigned double-long word
Pointer pointer to data
32 32 0 .. 2
32
1 unsigned long word
pointer to function
Floating
2
Point
2. Floating point types conform to the IEEE 754 format.
float 32 32
-3.402e
38
.. -1.175e
-38
1.175e
-38
.. 3.402e
38
unsigned long word
double
64 64
-1.797e
308
.. -2.225e
-308
2.225e
-308
.. 1.797e
308
unsigned double-long word
long double
/