1<html lang="en"> 2<head> 3<title>Named Address Spaces - Using the GNU Compiler Collection (GCC)</title> 4<meta http-equiv="Content-Type" content="text/html"> 5<meta name="description" content="Using the GNU Compiler Collection (GCC)"> 6<meta name="generator" content="makeinfo 4.13"> 7<link title="Top" rel="start" href="index.html#Top"> 8<link rel="up" href="C-Extensions.html#C-Extensions" title="C Extensions"> 9<link rel="prev" href="Fixed_002dPoint.html#Fixed_002dPoint" title="Fixed-Point"> 10<link rel="next" href="Zero-Length.html#Zero-Length" title="Zero Length"> 11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> 12<!-- 13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 152010 Free Software Foundation, Inc. 16 17Permission is granted to copy, distribute and/or modify this document 18under the terms of the GNU Free Documentation License, Version 1.3 or 19any later version published by the Free Software Foundation; with the 20Invariant Sections being ``Funding Free Software'', the Front-Cover 21Texts being (a) (see below), and with the Back-Cover Texts being (b) 22(see below). A copy of the license is included in the section entitled 23``GNU Free Documentation License''. 24 25(a) The FSF's Front-Cover Text is: 26 27 A GNU Manual 28 29(b) The FSF's Back-Cover Text is: 30 31 You have freedom to copy and modify this GNU Manual, like GNU 32 software. Copies published by the Free Software Foundation raise 33 funds for GNU development.--> 34<meta http-equiv="Content-Style-Type" content="text/css"> 35<style type="text/css"><!-- 36 pre.display { font-family:inherit } 37 pre.format { font-family:inherit } 38 pre.smalldisplay { font-family:inherit; font-size:smaller } 39 pre.smallformat { font-family:inherit; font-size:smaller } 40 pre.smallexample { font-size:smaller } 41 pre.smalllisp { font-size:smaller } 42 span.sc { font-variant:small-caps } 43 span.roman { font-family:serif; font-weight:normal; } 44 span.sansserif { font-family:sans-serif; font-weight:normal; } 45--></style> 46<link rel="stylesheet" type="text/css" href="../cs.css"> 47</head> 48<body> 49<div class="node"> 50<a name="Named-Address-Spaces"></a> 51<p> 52Next: <a rel="next" accesskey="n" href="Zero-Length.html#Zero-Length">Zero Length</a>, 53Previous: <a rel="previous" accesskey="p" href="Fixed_002dPoint.html#Fixed_002dPoint">Fixed-Point</a>, 54Up: <a rel="up" accesskey="u" href="C-Extensions.html#C-Extensions">C Extensions</a> 55<hr> 56</div> 57 58<h3 class="section">6.16 Named address spaces</h3> 59 60<p><a name="index-named-address-spaces-2343"></a> 61As an extension, the GNU C compiler supports named address spaces as 62defined in the N1275 draft of ISO/IEC DTR 18037. Support for named 63address spaces in GCC will evolve as the draft technical report changes. 64Calling conventions for any target might also change. At present, only 65the SPU and M32C targets support other address spaces. On the SPU target, for 66example, variables may be declared as belonging to another address space 67by qualifying the type with the <code>__ea</code> address space identifier: 68 69<pre class="smallexample"> extern int __ea i; 70</pre> 71 <p>When the variable <code>i</code> is accessed, the compiler will generate 72special code to access this variable. It may use runtime library 73support, or generate special machine instructions to access that address 74space. 75 76 <p>The <code>__ea</code> identifier may be used exactly like any other C type 77qualifier (e.g., <code>const</code> or <code>volatile</code>). See the N1275 78document for more details. 79 80 <p>On the M32C target, with the R8C and M16C cpu variants, variables 81qualified with <code>__far</code> are accessed using 32-bit addresses in 82order to access memory beyond the first 64k bytes. If <code>__far</code> is 83used with the M32CM or M32C cpu variants, it has no effect. 84 85 </body></html> 86 87