9.31.3 Nios II Machine Relocations

%hiadj( expression )
Extract the upper 16 bits of expression and add one if the 15th bit is set.

The value of %hiadj( expression ) is:

          ((expression
 >> 16) & 0xffff) + ((expression
 >> 15) & 0x01)

The %hiadj relocation is intended to be used with the addi , ld or st instructions along with a %lo , in order to load a 32-bit constant.

          movhi r2, %hiadj(symbol)
          addi r2, r2, %lo(symbol)


%hi( expression )
Extract the upper 16 bits of expression .


%lo( expression )
Extract the lower 16 bits of expression .


%gprel( expression )
Subtract the value of the symbol _gp from expression .

The intention of the %gprel relocation is to have a fast small area of memory which only takes a 16-bit immediate to access.

                 .section .sdata
          fastint:
                .int 123
                .section .text
                ldw r4, %gprel(fastint)(gp)


%call( expression )
%call_lo( expression )
%call_hiadj( expression )
%got( expression )
%got_lo( expression )
%got_hiadj( expression )
%gotoff( expression )
%gotoff_lo( expression )
%gotoff_hiadj( expression )
%tls_gd( expression )
%tls_ie( expression )
%tls_le( expression )
%tls_ldm( expression )
%tls_ldo( expression )
These relocations support the ABI for Linux Systems documented in the Nios II Processor Reference Handbook .