User`s guide

Macros for 64-Bit Addressing
$IS_32BITS
2.
$is_32bits 4(R8), 20$, 30$, R28
In this example, the compiler checks the sign extension of the low 32 bits of
the 64-bit value at 4(R8) using R28 as a temporary register and, based on the
check, branches to either 20$ or 30$.
$IS_DESC64
Tests the specified descriptor to determine if it is a 64-bit format descriptor, and
directs the program flow based on the outcome of the test.
Format
$IS_DESC64 desc_addr, target, size=long | quad
Parameters
desc_addr
The address of the descriptor to test.
target
The label to branch to if the descriptor is in 64-bit format.
size=long | quad
The size of the address pointing to the descriptor. The default value is size=long.
Description
$IS_DESC64 tests the fields that distinguish a 64-bit descriptor from a 32-bit
descriptor. If it is in 64-bit form, a branch is taken to the specified target. The
address to be tested is read as a longword, unless size=quad is specified.
Examples
1.
$is_desc64 r9, 10$
In this example, the descriptor pointed to by R9 is tested, and if it is in 64-bit
form, a branch to 10$ is taken.
2.
$is_desc64 8(r0), 20$, size=quad
In this example, the quadword at 8(R0) is read, and the descriptor it points to
is tested. If it is in 64-bit form, a branch to 20$ is taken.
Macros for 64-Bit Addressing E–5