Keil™, An ARM® Company

RealView Compiler Reference Guide

Technical Support

On-Line Manuals

RealView Compiler Reference Guide

Preface
Introduction
Compiler Command-line Options
Language Extensions
Compiler-specific Features
Keywords and operators
__align
__alignof__
__ALIGNOF__
__asm
__forceinline
__global_reg
__inline
__int64
__INTADDR__
__irq
__packed
__pure
__smc
__softfp
__svc
__svc_indirect
__svc_indirect_r7
__value_in_regs
__weak
__writeonly
__declspec attributes
__declspec(dllexport)
__declspec(dllimport)
__declspec(noinline)
__declspec(noreturn)
__declspec(nothrow)
__declspec(notshared)
__declspec(thread)
Function attributes
__attribute__((alias))
__attribute__((always_inline))
__attribute__((const))
__attribute__((deprecated))
__attribute__((malloc))
__attribute__((noinline))
__attribute__((noreturn))
__attribute__((pure))
__attribute__((section))
__attribute__((unused))
__attribute__((used))
__attribute__((weak))
Type attributes
__attribute__((aligned))
__attribute((packed))
__attribute__((transparent_union))
Variable attributes
__attribute__((alias))
__attribute__((at(address)))
__attribute__((aligned))
__attribute__((deprecated))
__attribute__((packed))
__attribute__((section))
__attribute__((transparent_union))
__attribute__((unused))
__attribute__((used))
__attribute__((weak))
__attribute__((zero_init))
Pragmas
#pragma [no_]anon_unions
#pragma arm
#pragma arm section [section_sort_list]
#pragma diag_default tag[,tag,...]
#pragma diag_error tag[,tag,...]
#pragma diag_remark tag[,tag,...]
#pragma diag_suppress tag[,tag,...]
#pragma diag_warning tag[, tag, ...]
#pragma [no_]exceptions_unwind
#pragma hdrstop
#pragma import symbol_name
#pragma [no_]inline
#pragma no_pch
#pragma Onum
#pragma once
#pragma Ospace
#pragma Otime
#pragma pop
#pragma push
#pragma [no_]softfp_linkage
#pragma unroll [(n)]
#pragma unroll_completely
#pragma thumb
Instruction intrinsics
__breakpoint
__builtin_clz
__builtin_constant_p
__builtin_expect
__builtin_frame_address
__builtin_return_address
__builtin_popcount
__cdp
__clrex
__clz
__current_pc
__current_sp
__disable_fiq
__disable_irq
__enable_fiq
__enable_irq
__fabs
__fabsf
__force_stores
__ldrex
__ldrt
__memory_changed
__nop
__pld
__pli
__qadd
__qdbl
__qsub
__rbit
__rev
__return_address
__ror
__schedule_barrier
__semihost
__sev
__sqrt
__sqrtf
__ssat
__strex
__strt
__swp
__usat
__wfe
__wfi
__yield
ARMv6 SIMD intrinsics
ETSI basic operations
C55x intrinsics
Named register variables
Compiler predefines
Predefined macros
Function names
C and C++ Implementation Details
Via File Syntax
Standard C Implementation Definition
Standard C++ Implementation Definition
C and C++ Compiler Implementation Limits

__attribute__((at(address)))

4.5.2. __attribute__((at(address)))

This variable attribute enables you to specify the absolute address of a variable.

The variable is placed in its own section, and the section containing the variable is given an appropriate type by the compiler:

  • Read-only variables are placed in a section with type RO.

  • Initialized read‑write variables are placed in a section with type RW.

    In particular, variables explicitly initialized to zero are placed in RW not ZI. Such variables are not candidates for the ZI-to-RW optimization of the compiler.

  • Uninitialized variables are placed in a section with type ZI.

Note

This variable attribute is not supported by GNU compilers.

Syntax

__attribute__((at(address)))

Where:

address

is the desired address of the variable.

The keyword __at comes immediately after the variable name.

Restrictions

The linker is not always able to place sections produced by the at variable attribute.

Errors

The linker gives an error message if it is not possible to place a section at a specified address.

Example

const int x1 __attribute__((at(0x10000))) = 10; /* RO */ int x2 __attribute__((at(0x12000))) = 10;       /* RW */int x3 __attribute__((at(0x14000))) = 0;        /* RW, not ZI */int x4 __attribute__((at(0x16000)));            /* ZI */
Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0376A