1 @c Copyright 1991, 1992, 1993, 1994, 1995, 1997, 1999, 2002
2 @c Free Software Foundation, Inc.
3 @c This is part of the GAS manual.
4 @c For copying conditions, see the file as.texinfo.
8 @chapter SPARC Dependent Features
11 @node Machine Dependencies
12 @chapter SPARC Dependent Features
17 * Sparc-Opts:: Options
18 * Sparc-Aligned-Data:: Option to enforce aligned data
19 * Sparc-Float:: Floating Point
20 * Sparc-Directives:: Sparc Machine Directives
26 @cindex options for SPARC
28 @cindex architectures, SPARC
29 @cindex SPARC architectures
30 The SPARC chip family includes several successive levels, using the same
31 core instruction set, but including a few additional instructions at
32 each level. There are exceptions to this however. For details on what
33 instructions each variant supports, please see the chip's architecture
36 By default, @code{@value{AS}} assumes the core instruction set (SPARC
37 v6), but ``bumps'' the architecture level as needed: it switches to
38 successively higher architectures as it encounters instructions that
39 only exist in the higher levels.
41 If not configured for SPARC v9 (@code{sparc64-*-*}) GAS will not bump
42 passed sparclite by default, an option must be passed to enable the
45 GAS treats sparclite as being compatible with v8, unless an architecture
46 is explicitly requested. SPARC v9 is always incompatible with sparclite.
48 @c The order here is the same as the order of enum sparc_opcode_arch_val
49 @c to give the user a sense of the order of the "bumping".
59 @item -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
60 @itemx -Av8plus | -Av8plusa | -Av9 | -Av9a
61 Use one of the @samp{-A} options to select one of the SPARC
62 architectures explicitly. If you select an architecture explicitly,
63 @code{@value{AS}} reports a fatal error if it encounters an instruction
64 or feature requiring an incompatible or higher level.
66 @samp{-Av8plus} and @samp{-Av8plusa} select a 32 bit environment.
68 @samp{-Av9} and @samp{-Av9a} select a 64 bit environment and are not
69 available unless GAS is explicitly configured with 64 bit environment
72 @samp{-Av8plusa} and @samp{-Av9a} enable the SPARC V9 instruction set with
73 UltraSPARC extensions.
75 @item -xarch=v8plus | -xarch=v8plusa
76 For compatibility with the Solaris v9 assembler. These options are
77 equivalent to -Av8plus and -Av8plusa, respectively.
80 Warn whenever it is necessary to switch to another level.
81 If an architecture level is explicitly requested, GAS will not issue
82 warnings until that level is reached, and will then bump the level
83 as required (except between incompatible levels).
86 Select the word size, either 32 bits or 64 bits.
87 These options are only available with the ELF object file format,
88 and require that the necessary BFD support has been included.
91 @node Sparc-Aligned-Data
92 @section Enforcing aligned data
94 @cindex data alignment on SPARC
95 @cindex SPARC data alignment
96 SPARC GAS normally permits data to be misaligned. For example, it
97 permits the @code{.long} pseudo-op to be used on a byte boundary.
98 However, the native SunOS and Solaris assemblers issue an error when
99 they see misaligned data.
101 @kindex --enforce-aligned-data
102 You can use the @code{--enforce-aligned-data} option to make SPARC GAS
103 also issue an error about misaligned data, just as the SunOS and Solaris
106 The @code{--enforce-aligned-data} option is not the default because gcc
107 issues misaligned data pseudo-ops when it initializes certain packed
108 data structures (structures defined using the @code{packed} attribute).
109 You may have to assemble with GAS in order to initialize packed data
110 structures in your own code.
113 @c FIXME: (sparc) Fill in "syntax" section!
115 I don't know anything about Sparc syntax. Someone who does
116 will have to write this section.
120 @section Floating Point
122 @cindex floating point, SPARC (@sc{ieee})
123 @cindex SPARC floating point (@sc{ieee})
124 The Sparc uses @sc{ieee} floating-point numbers.
126 @node Sparc-Directives
127 @section Sparc Machine Directives
129 @cindex SPARC machine directives
130 @cindex machine directives, SPARC
131 The Sparc version of @code{@value{AS}} supports the following additional
135 @cindex @code{align} directive, SPARC
137 This must be followed by the desired alignment in bytes.
139 @cindex @code{common} directive, SPARC
141 This must be followed by a symbol name, a positive number, and
142 @code{"bss"}. This behaves somewhat like @code{.comm}, but the
145 @cindex @code{half} directive, SPARC
147 This is functionally identical to @code{.short}.
149 @cindex @code{nword} directive, SPARC
151 On the Sparc, the @code{.nword} directive produces native word sized value,
152 ie. if assembling with -32 it is equivalent to @code{.word}, if assembling
153 with -64 it is equivalent to @code{.xword}.
155 @cindex @code{proc} directive, SPARC
157 This directive is ignored. Any text following it on the same
158 line is also ignored.
160 @cindex @code{register} directive, SPARC
162 This directive declares use of a global application or system register.
163 It must be followed by a register name %g2, %g3, %g6 or %g7, comma and
164 the symbol name for that register. If symbol name is @code{#scratch},
165 it is a scratch register, if it is @code{#ignore}, it just suppresses any
166 errors about using undeclared global register, but does not emit any
167 information about it into the object file. This can be useful e.g. if you
168 save the register before use and restore it after.
170 @cindex @code{reserve} directive, SPARC
172 This must be followed by a symbol name, a positive number, and
173 @code{"bss"}. This behaves somewhat like @code{.lcomm}, but the
176 @cindex @code{seg} directive, SPARC
178 This must be followed by @code{"text"}, @code{"data"}, or
179 @code{"data1"}. It behaves like @code{.text}, @code{.data}, or
182 @cindex @code{skip} directive, SPARC
184 This is functionally identical to the @code{.space} directive.
186 @cindex @code{word} directive, SPARC
188 On the Sparc, the @code{.word} directive produces 32 bit values,
189 instead of the 16 bit values it produces on many other machines.
191 @cindex @code{xword} directive, SPARC
193 On the Sparc V9 processor, the @code{.xword} directive produces