Index
Prev
Index
32-bit ABI
Limitations of the 32-bit ABI
32-bit mode
limitations
Limitations of the 32-bit ABI
64-bit ABI
Limitations of the 64-bit ABI
64-bit mode
limitations
Limitations of the 64-bit ABI
ABI
attribute summary
ABI Attribute Summary
definition
Purpose of the n32 ABI
addressing scheme
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
argument registers
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
arguments
passing
Argument Passing
assembly language programs
N32 Migration Requirements
Assembly Language Programming Guidelines
global pointer
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
issues
Assembly Language Issues
leaf routine
An Example Application
porting
Source Code Changes
Assembly Language Issues
predefined variables
Predefined Variables
attribute summary
ABI Attribute Summary
build
multiple versions
Building Multiple Versions of the Application
n32 application
Building and Running the N32 Application
o32 program
Building and Running the o32 Application
build procedure
Build Procedure
C functions
floating point
Source Code Changes
calling convention
Calling Convention Implementations
char
Implementation Differences
code
PIC
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
compiling
for n32 and o32
Putting It Together
n32 program
Building and Running the N32 Application
o32 program
Building and Running the o32 Application
composite types
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
.cpload
gp Register
.cpload register
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
.cprestore
gp Register
.cprestore register
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
.cpsetup register
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
data types
Implementation Differences
char
Implementation Differences
double
Implementation Differences
float
Implementation Differences
int
Implementation Differences
pointer
Implementation Differences
short int
Implementation Differences
differences
hardware
Run-time Issues
double
Implementation Differences
doublewords
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
executing
n32 program
Building and Running the N32 Application
float
Implementation Differences
floating points
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
arguments
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
C functions
Source Code Changes
quad-precision
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
registers
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
Using More Floating Point Registers
FPU
Using More Floating Point Registers
FR bit
Using More Floating Point Registers
function
C
Source Code Changes
get_regs()
Argument Passing
regs.s
An Example Application
get_regs() function
Argument Passing
GOT
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
$gp register
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
An Example Application
gp Register
implementation differences
Implementation Differences
include files
Build Procedure
int
Implementation Differences
integer parameters
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
integer registers
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
internal subprogram interface
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
ints
sign-extended
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
leaf routine
An Example Application
libraries
N32 Migration Requirements
Compatibility
porting
Porting Environment
linking
Using a Different Subroutine Linkage
macros
sys/asm.h
gp Register
main() function
An Example Application
makefiles
porting
Porting Environment
memory
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
migrating to n32
N32 Migration Requirements
multiple versions
Building Multiple Versions of the Application
n32
addresses
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
and assembly language
N32 Migration Requirements
argument passing
Argument Passing
argument registers
What is N32?
build procedure
Build Procedure
calling convention
What is N32?
Calling Convention Implementations
compiling varargs
Varargs Routines
data types
Implementation Differences
debug format
What is N32?
doublewords
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
examples
N32 Examples and Case Studies
floating point registers
What is N32?
floating points
parameters
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
FR bit
Using More Floating Point Registers
implementation differences
Implementation Differences
integer model
What is N32?
integer parameters
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
ISA
What is N32?
libraries
N32 Migration Requirements
Compatibility
migration
N32 Migration Requirements
native calling sequence
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
native subprogram interface
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
optimizer
Run-time Issues
parameter passing
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
pointers
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
porting
N32 Porting Guidelines
recompile programs
N32 Migration Requirements
register conventions
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
register sizes
Different Register Sizes
Register Size
requirements
N32 Migration Requirements
runtime issues
Run-time Issues
source code
Source Code Changes
stack parameter
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
subroutine linkage
Using a Different Subroutine Linkage
n64
data types
Implementation Differences
implementation differences
Implementation Differences
libraries
Compatibility
native calling sequence
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
native subprogram interface
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
NARGSAVE
Using a Different Subroutine Linkage
native calling sequence
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
native subprogram interface
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
o32
build
Building and Running the o32 Application
FR bit
Using More Floating Point Registers
libraries
Compatibility
optimizer
Run-time Issues
parameter passing
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
passing arguments
Argument Passing
PIC
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
pointers
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
Implementation Differences
porting
assembly language code
Source Code Changes
Assembly Language Programming Guidelines
Assembly Language Issues
example
An Example Application
for n32 and o32
Putting It Together
libraries
Porting Environment
macros
gp Register
makefiles
Porting Environment
porting environment
Porting Environment
porting guidelines
N32 Porting Guidelines
porting to n32
N32 Migration Requirements
position-independent code
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
predefined variables
Predefined Variables
prototypes
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
quad-precision floating point
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
registers
argument
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
conventions
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
.cpload
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
.cprestore
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
.cpsetup
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
floating point
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
Using More Floating Point Registers
$gp
Caller $gp (o32) vs. Callee Saved $gp (n32 and n64)
An Example Application
gp Register
integer
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
reserving memory
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
size
Different Register Sizes
Register Size
reg.s function
An Example Application
routines
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
leaf
An Example Application
varargs
Varargs Routines
run
o32 program
Building and Running the o32 Application
runtime issues
Run-time Issues
scalar parameters
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
short int
Implementation Differences
source code
changes
Source Code Changes
stack parameter slots
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
stack pointer
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
stack regions
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
structs
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
subroutine linkage
Using a Different Subroutine Linkage
sys/asm.h file
gp Register
types
composite
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
data
Implementation Differences
structs
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
unions
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
unions
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
varargs
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
function
An Example Application
routine
Varargs Routines
variable argument routines
n32 and Native 64-Bit (n64) Subprogram Interface for MIPS Architectures
variables
predefined
Predefined Variables
versions
multiple
Building Multiple Versions of the Application