3e172fc79cc63b552de0e121fa5f24cef46c4ae3
[deliverable/binutils-gdb.git] / gas / doc / c-sparc.texi
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.
5 @ifset GENERIC
6 @page
7 @node Sparc-Dependent
8 @chapter SPARC Dependent Features
9 @end ifset
10 @ifclear GENERIC
11 @node Machine Dependencies
12 @chapter SPARC Dependent Features
13 @end ifclear
14
15 @cindex SPARC support
16 @menu
17 * Sparc-Opts:: Options
18 * Sparc-Aligned-Data:: Option to enforce aligned data
19 * Sparc-Syntax:: Syntax
20 * Sparc-Float:: Floating Point
21 * Sparc-Directives:: Sparc Machine Directives
22 @end menu
23
24 @node Sparc-Opts
25 @section Options
26
27 @cindex options for SPARC
28 @cindex SPARC options
29 @cindex architectures, SPARC
30 @cindex SPARC architectures
31 The SPARC chip family includes several successive levels, using the same
32 core instruction set, but including a few additional instructions at
33 each level. There are exceptions to this however. For details on what
34 instructions each variant supports, please see the chip's architecture
35 reference manual.
36
37 By default, @code{@value{AS}} assumes the core instruction set (SPARC
38 v6), but ``bumps'' the architecture level as needed: it switches to
39 successively higher architectures as it encounters instructions that
40 only exist in the higher levels.
41
42 If not configured for SPARC v9 (@code{sparc64-*-*}) GAS will not bump
43 passed sparclite by default, an option must be passed to enable the
44 v9 instructions.
45
46 GAS treats sparclite as being compatible with v8, unless an architecture
47 is explicitly requested. SPARC v9 is always incompatible with sparclite.
48
49 @c The order here is the same as the order of enum sparc_opcode_arch_val
50 @c to give the user a sense of the order of the "bumping".
51
52 @table @code
53 @kindex -Av6
54 @kindex Av7
55 @kindex -Av8
56 @kindex -Asparclet
57 @kindex -Asparclite
58 @kindex -Av9
59 @kindex -Av9a
60 @item -Av6 | -Av7 | -Av8 | -Asparclet | -Asparclite
61 @itemx -Av8plus | -Av8plusa | -Av9 | -Av9a
62 Use one of the @samp{-A} options to select one of the SPARC
63 architectures explicitly. If you select an architecture explicitly,
64 @code{@value{AS}} reports a fatal error if it encounters an instruction
65 or feature requiring an incompatible or higher level.
66
67 @samp{-Av8plus} and @samp{-Av8plusa} select a 32 bit environment.
68
69 @samp{-Av9} and @samp{-Av9a} select a 64 bit environment and are not
70 available unless GAS is explicitly configured with 64 bit environment
71 support.
72
73 @samp{-Av8plusa} and @samp{-Av9a} enable the SPARC V9 instruction set with
74 UltraSPARC extensions.
75
76 @item -xarch=v8plus | -xarch=v8plusa
77 For compatibility with the Solaris v9 assembler. These options are
78 equivalent to -Av8plus and -Av8plusa, respectively.
79
80 @item -bump
81 Warn whenever it is necessary to switch to another level.
82 If an architecture level is explicitly requested, GAS will not issue
83 warnings until that level is reached, and will then bump the level
84 as required (except between incompatible levels).
85
86 @item -32 | -64
87 Select the word size, either 32 bits or 64 bits.
88 These options are only available with the ELF object file format,
89 and require that the necessary BFD support has been included.
90 @end table
91
92 @node Sparc-Aligned-Data
93 @section Enforcing aligned data
94
95 @cindex data alignment on SPARC
96 @cindex SPARC data alignment
97 SPARC GAS normally permits data to be misaligned. For example, it
98 permits the @code{.long} pseudo-op to be used on a byte boundary.
99 However, the native SunOS and Solaris assemblers issue an error when
100 they see misaligned data.
101
102 @kindex --enforce-aligned-data
103 You can use the @code{--enforce-aligned-data} option to make SPARC GAS
104 also issue an error about misaligned data, just as the SunOS and Solaris
105 assemblers do.
106
107 The @code{--enforce-aligned-data} option is not the default because gcc
108 issues misaligned data pseudo-ops when it initializes certain packed
109 data structures (structures defined using the @code{packed} attribute).
110 You may have to assemble with GAS in order to initialize packed data
111 structures in your own code.
112
113 @cindex SPARC syntax
114 @cindex syntax, SPARC
115 @node Sparc-Syntax
116 @section Sparc Syntax
117 The assembler syntax closely follows The Sparc Architecture Manual,
118 versions 8 and 9, as well as most extensions defined by Sun
119 for their UltraSPARC and Niagara line of processors.
120
121 @menu
122 * Sparc-Chars:: Special Characters
123 * Sparc-Regs:: Register Names
124 * Sparc-Constants:: Constant Names
125 * Sparc-Relocs:: Relocations
126 @end menu
127
128 @node Sparc-Chars
129 @subsection Special Characters
130
131 @cindex line comment character, Sparc
132 @cindex Sparc line comment character
133 @samp{#} is the line comment character.
134
135 @cindex line separator, Sparc
136 @cindex statement separator, Sparc
137 @cindex Sparc line separator
138 @samp{;} can be used instead of a newline to separate statements.
139
140 @node Sparc-Regs
141 @subsection Register Names
142 @cindex Sparc registers
143 @cindex register names, Sparc
144
145 The Sparc integer register file is broken down into global,
146 outgoing, local, and incoming.
147
148 @itemize @bullet
149 @item
150 The 8 global registers are referred to as @samp{%g@var{n}}.
151
152 @item
153 The 8 outgoing registers are referred to as @samp{%o@var{n}}.
154
155 @item
156 The 8 local registers are referred to as @samp{%l@var{n}}.
157
158 @item
159 The 8 incoming registers are referred to as @samp{%i@var{n}}.
160
161 @item
162 The frame pointer register @samp{%i6} can be referenced using
163 the alias @samp{%fp}.
164
165 @item
166 The stack pointer register @samp{%o6} can be referenced using
167 the alias @samp{%sp}.
168 @end itemize
169
170 Floating point registers are simply referred to as @samp{%f@var{n}}.
171 When assembling for pre-V9, only 32 floating point registers
172 are available. For V9 and later there are 64, but there are
173 restrictions when referencing the upper 32 registers. They
174 can only be accessed as double or quad, and thus only even
175 or quad numbered accesses are allowed. For example, @samp{%f34}
176 is a legal floating point register, but @samp{%f35} is not.
177
178 Certain V9 instructions allow access to ancillary state registers.
179 Most simply they can be referred to as @samp{%asr@var{n}} where
180 @var{n} can be from 16 to 31. However, there are some aliased
181 defined to reference ASR registers defined for various UltraSPARC
182 processors:
183
184 @itemize @bullet
185 @item
186 The tick compare register is referred to as @samp{%tick_cmpr}.
187
188 @item
189 The system tick register is referred to as @samp{%stick}. An alias,
190 @samp{%sys_tick}, exists but is deprecated and should not be used
191 by new software.
192
193 @item
194 The system tick compare register is referred to as @samp{%stick_cmpr}.
195 An alias, @samp{%sys_tick_cmpr}, exists but is deprecated and should
196 not be used by new software.
197
198 @item
199 The software interrupt register is referred to as @samp{%softint}.
200
201 @item
202 The set software interrupt register is referred to as @samp{%set_softint}.
203
204 @item
205 The clear software interrupt register is referred to as
206 @samp{%clear_softint}.
207
208 @item
209 The performance instrumentation counters register is referred to as
210 @samp{%pic}.
211
212 @item
213 The performance control register is referred to as @samp{%pcr}.
214
215 @item
216 The graphics status register is referred to as @samp{%gsr}.
217
218 @item
219 The dispatch control register is referred to as @samp{%dcr}.
220 @end itemize
221
222 Various V9 branch and conditional move instructions allow
223 specification of which set of integer condition codes to
224 test. These are referred to as @samp{%xcc} and @samp{%icc}.
225
226 In V9, there are 4 sets of floating point condition codes
227 which are referred to as @samp{%fcc@var{n}}.
228
229 Several special privileged and non-privileged registers
230 exist:
231
232 @itemize @bullet
233 @item
234 The V9 address space identifier register is referred to as @samp{%asi}.
235
236 @item
237 The V9 restorable windows register is referred to as @samp{%canrestore}.
238
239 @item
240 The V9 savable windows register is referred to as @samp{%cansave}.
241
242 @item
243 The V9 clean windows register is referred to as @samp{%cleanwin}.
244
245 @item
246 The V9 current window pointer register is referred to as @samp{%cwp}.
247
248 @item
249 The floating-point queue register is referred to as @samp{%fq}.
250
251 @item
252 The co-processor queue register is referred to as @samp{%cq}.
253
254 @item
255 The floating point status register is referred to as @samp{%fsr}.
256
257 @item
258 The other windows register is referred to as @samp{%otherwin}.
259
260 @item
261 The V9 program counter register is referred to as @samp{%pc}.
262
263 @item
264 The V9 next program counter register is referred to as @samp{%npc}.
265
266 @item
267 The V9 processor interrupt level register is referred to as @samp{%pil}.
268
269 @item
270 The V9 processor state register is referred to as @samp{%pstate}.
271
272 @item
273 The trap base address register is referred to as @samp{%tba}.
274
275 @item
276 The V9 tick register is referred to as @samp{%tick}.
277
278 @item
279 The V9 trap level is referred to as @samp{%tl}.
280
281 @item
282 The V9 trap program counter is referred to as @samp{%tpc}.
283
284 @item
285 The V9 trap next program counter is referred to as @samp{%tnpc}.
286
287 @item
288 The V9 trap state is referred to as @samp{%tstate}.
289
290 @item
291 The V9 trap type is referred to as @samp{%tt}.
292
293 @item
294 The V9 condition codes is referred to as @samp{%ccr}.
295
296 @item
297 The V9 floating-point registers state is referred to as @samp{%fprs}.
298
299 @item
300 The V9 version register is referred to as @samp{%ver}.
301
302 @item
303 The V9 window state register is referred to as @samp{%wstate}.
304
305 @item
306 The Y register is referred to as @samp{%y}.
307
308 @item
309 The V8 window invalid mask register is referred to as @samp{%wim}.
310
311 @item
312 The V8 processor state register is referred to as @samp{%psr}.
313
314 @item
315 The global register level register is referred to as @samp{%gl}.
316 @end itemize
317
318 Several special register names exist for hypervisor mode code:
319
320 @itemize @bullet
321 @item
322 The hyperprivileged processor state register is referred to as
323 @samp{%hpstate}.
324
325 @item
326 The hyperprivileged trap state register is referred to as @samp{%htstate}.
327
328 @item
329 The hyperprivileged interrupt pending register is referred to as
330 @samp{%hintp}.
331
332 @item
333 The hyperprivileged trap base address register is referred to as
334 @samp{%htba}.
335
336 @item
337 The hyperprivileged implementation version register is referred
338 to as @samp{%hver}.
339
340 @item
341 The hyperprivileged system tick compare register is referred
342 to as @samp{%hstick_cmpr}. Note that there is no @samp{%hstick}
343 register, the normal @samp{%stick} is used.
344 @end itemize
345
346 @node Sparc-Constants
347 @subsection Constants
348 @cindex Sparc constants
349 @cindex constants, Sparc
350
351 Several Sparc instructions take an immediate operand field for
352 which mnemonic names exist. Two such examples are @samp{membar}
353 and @samp{prefetch}. Another example are the set of V9
354 memory access instruction that allow specification of an
355 address space identifier.
356
357 The @samp{membar} instruction specifies a memory barrier that is
358 the defined by the operand which is a bitmask. The supported
359 mask mnemonics are:
360
361 @itemize @bullet
362 @item
363 @samp{#Sync} requests that all operations (including nonmemory
364 reference operations) appearing prior to the @code{membar} must have
365 been performed and the effects of any exceptions become visible before
366 any instructions after the @code{membar} may be initiated. This
367 corresponds to @code{membar} cmask field bit 2.
368
369 @item
370 @samp{#MemIssue} requests that all memory reference operations
371 appearing prior to the @code{membar} must have been performed before
372 any memory operation after the @code{membar} may be initiated. This
373 corresponds to @code{membar} cmask field bit 1.
374
375 @item
376 @samp{#Lookaside} requests that a store appearing prior to the
377 @code{membar} must complete before any load following the
378 @code{membar} referencing the same address can be initiated. This
379 corresponds to @code{membar} cmask field bit 0.
380
381 @item
382 @samp{#StoreStore} defines that the effects of all stores appearing
383 prior to the @code{membar} instruction must be visible to all
384 processors before the effect of any stores following the
385 @code{membar}. Equivalent to the deprecated @code{stbar} instruction.
386 This corresponds to @code{membar} mmask field bit 3.
387
388 @item
389 @samp{#LoadStore} defines all loads appearing prior to the
390 @code{membar} instruction must have been performed before the effect
391 of any stores following the @code{membar} is visible to any other
392 processor. This corresponds to @code{membar} mmask field bit 2.
393
394 @item
395 @samp{#StoreLoad} defines that the effects of all stores appearing
396 prior to the @code{membar} instruction must be visible to all
397 processors before loads following the @code{membar} may be performed.
398 This corresponds to @code{membar} mmask field bit 1.
399
400 @item
401 @samp{#LoadLoad} defines that all loads appearing prior to the
402 @code{membar} instruction must have been performed before any loads
403 following the @code{membar} may be performed. This corresponds to
404 @code{membar} mmask field bit 0.
405
406 @end itemize
407
408 These values can be ored together, for example:
409
410 @example
411 membar #Sync
412 membar #StoreLoad | #LoadLoad
413 membar #StoreLoad | #StoreStore
414 @end example
415
416 The @code{prefetch} and @code{prefetcha} instructions take a prefetch
417 function code. The following prefetch function code constant
418 mnemonics are available:
419
420 @itemize @bullet
421 @item
422 @samp{#n_reads} requests a prefetch for several reads, and corresponds
423 to a prefetch function code of 0.
424
425 @samp{#one_read} requests a prefetch for one read, and corresponds
426 to a prefetch function code of 1.
427
428 @samp{#n_writes} requests a prefetch for several writes (and possibly
429 reads), and corresponds to a prefetch function code of 2.
430
431 @samp{#one_write} requests a prefetch for one write, and corresponds
432 to a prefetch function code of 3.
433
434 @samp{#page} requests a prefetch page, and corresponds to a prefetch
435 function code of 4.
436
437 @samp{#invalidate} requests a prefetch invalidate, and corresponds to
438 a prefetch function code of 16.
439
440 @samp{#unified} requests a prefetch to the nearest unified cache, and
441 corresponds to a prefetch function code of 17.
442
443 @samp{#n_reads_strong} requests a strong prefetch for several reads,
444 and corresponds to a prefetch function code of 20.
445
446 @samp{#one_read_strong} requests a strong prefetch for one read,
447 and corresponds to a prefetch function code of 21.
448
449 @samp{#n_writes_strong} requests a strong prefetch for several writes,
450 and corresponds to a prefetch function code of 22.
451
452 @samp{#one_write_strong} requests a strong prefetch for one write,
453 and corresponds to a prefetch function code of 23.
454
455 Onle one prefetch code may be specified. Here are some examples:
456
457 @example
458 prefetch [%l0 + %l2], #one_read
459 prefetch [%g2 + 8], #n_writes
460 prefetcha [%g1] 0x8, #unified
461 prefetcha [%o0 + 0x10] %asi, #n_reads
462 @end example
463
464 The actual behavior of a given prefetch function code is processor
465 specific. If a processor does not implement a given prefetch
466 function code, it will treat the prefetch instruction as a nop.
467
468 For instructions that accept an immediate address space identifier,
469 @code{@value{AS}} provides many mnemonics corresponding to
470 V9 defined as well as UltraSPARC and Niagara extended values.
471 For example, @samp{#ASI_P} and @samp{#ASI_BLK_INIT_QUAD_LDD_AIUS}.
472 See the V9 and processor specific manuals for details.
473
474 @end itemize
475
476 @node Sparc-Relocs
477 @subsection Relocations
478 @cindex Sparc relocations
479 @cindex relocations, Sparc
480
481 ELF relocations are available as defined in the 32-bit and 64-bit
482 Sparc ELF specifications.
483
484 @code{R_SPARC_HI22} is obtained using @samp{%hi} and @code{R_SPARC_LO10}
485 is obtained using @samp{%lo}. Likewise @code{R_SPARC_HIX22} is
486 obtained from @samp{%hix} and @code{R_SPARC_LOX10} is obtained
487 using @samp{%lox}. For example:
488
489 @example
490 sethi %hi(symbol), %g1
491 or %g1, %lo(symbol), %g1
492
493 sethi %hix(symbol), %g1
494 xor %g1, %lox(symbol), %g1
495 @end example
496
497 These ``high'' mnemonics extract bits 31:10 of their operand,
498 and the ``low'' mnemonics extract bits 9:0 of their operand.
499
500 V9 code model relocations can be requested as follows:
501
502 @itemize @bullet
503 @item
504 @code{R_SPARC_HH22} is requested using @samp{%hh}. It can
505 also be generated using @samp{%uhi}.
506 @item
507 @code{R_SPARC_HM10} is requested using @samp{%hm}. It can
508 also be generated using @samp{%ulo}.
509 @item
510 @code{R_SPARC_LM22} is requested using @samp{%lm}.
511
512 @item
513 @code{R_SPARC_H44} is requested using @samp{%h44}.
514 @item
515 @code{R_SPARC_M44} is requested using @samp{%m44}.
516 @item
517 @code{R_SPARC_L44} is requested using @samp{%l44}.
518 @end itemize
519
520 The PC relative relocation @code{R_SPARC_PC22} can be obtained by
521 enclosing an operand inside of @samp{%pc22}. Likewise, the
522 @code{R_SPARC_PC10} relocation can be obtained using @samp{%pc10}.
523 These are mostly used when assembling PIC code. For example, the
524 standard PIC sequence on Sparc to get the base of the global offset
525 table, PC relative, into a register, can be performed as:
526
527 @example
528 sethi %pc22(_GLOBAL_OFFSET_TABLE_-4), %l7
529 add %l7, %pc10(_GLOBAL_OFFSET_TABLE_+4), %l7
530 @end example
531
532 Several relocations exist to allow the link editor to potentially
533 optimize GOT data references. The @code{R_SPARC_GOTDATA_OP_HIX22}
534 relocation can obtained by enclosing an operand inside of
535 @samp{%gdop_hix22}. The @code{R_SPARC_GOTDATA_OP_LOX10}
536 relocation can obtained by enclosing an operand inside of
537 @samp{%gdop_lox10}. Likewise, @code{R_SPARC_GOTDATA_OP} can be
538 obtained by enclosing an operand inside of @samp{%gdop}.
539 For example, assuming the GOT base is in register @code{%l7}:
540
541 @example
542 sethi %gdop_hix22(symbol), %l1
543 xor %l1, %gdop_lox10(symbol), %l1
544 ld [%l7 + %l1], %l2, %gdop(symbol)
545 @end example
546
547 There are many relocations that can be requested for access to
548 thread local storage variables. All of the Sparc TLS mnemonics
549 are supported:
550
551 @itemize @bullet
552 @item
553 @code{R_SPARC_TLS_GD_HI22} is requested using @samp{%tgd_hi22}.
554 @item
555 @code{R_SPARC_TLS_GD_LO10} is requested using @samp{%tgd_lo10}.
556 @item
557 @code{R_SPARC_TLS_GD_ADD} is requested using @samp{%tgd_add}.
558 @item
559 @code{R_SPARC_TLS_GD_CALL} is requested using @samp{%tgd_call}.
560
561 @item
562 @code{R_SPARC_TLS_LDM_HI22} is requested using @samp{%tldm_hi22}.
563 @item
564 @code{R_SPARC_TLS_LDM_LO10} is requested using @samp{%tldm_lo10}.
565 @item
566 @code{R_SPARC_TLS_LDM_ADD} is requested using @samp{%tldm_add}.
567 @item
568 @code{R_SPARC_TLS_LDM_CALL} is requested using @samp{%tldm_call}.
569
570 @item
571 @code{R_SPARC_TLS_LDO_HIX22} is requested using @samp{%tldo_hix22}.
572 @item
573 @code{R_SPARC_TLS_LDO_LOX10} is requested using @samp{%tldo_lox10}.
574 @item
575 @code{R_SPARC_TLS_LDO_ADD} is requested using @samp{%tldo_add}.
576
577 @item
578 @code{R_SPARC_TLS_IE_HI22} is requested using @samp{%tie_hi22}.
579 @item
580 @code{R_SPARC_TLS_IE_LO10} is requested using @samp{%tie_lo10}.
581 @item
582 @code{R_SPARC_TLS_IE_LD} is requested using @samp{%tie_ld}.
583 @item
584 @code{R_SPARC_TLS_IE_LDX} is requested using @samp{%tie_ldx}.
585 @item
586 @code{R_SPARC_TLS_IE_ADD} is requested using @samp{%tie_add}.
587
588 @item
589 @code{R_SPARC_TLS_LE_HIX22} is requested using @samp{%tle_hix22}.
590 @item
591 @code{R_SPARC_TLS_LE_LOX10} is requested using @samp{%tle_lox10}.
592 @end itemize
593
594 Here are some example TLS model sequences.
595
596 First, General Dynamic:
597
598 @example
599 sethi %tgd_hi22(symbol), %l1
600 add %l1, %tgd_lo10(symbol), %l1
601 add %l7, %l1, %o0, %tgd_add(symbol)
602 call __tls_get_addr, %tgd_call(symbol)
603 nop
604 @end example
605
606 Local Dynamic:
607
608 @example
609 sethi %tldm_hi22(symbol), %l1
610 add %l1, %tldm_lo10(symbol), %l1
611 add %l7, %l1, %o0, %tldm_add(symbol)
612 call __tls_get_addr, %tldm_call(symbol)
613 nop
614
615 sethi %tldo_hix22(symbol), %l1
616 xor %l1, %tldo_lox10(symbol), %l1
617 add %o0, %l1, %l1, %tldo_add(symbol)
618 @end example
619
620 Initial Exec:
621
622 @example
623 sethi %tie_hi22(symbol), %l1
624 add %l1, %tie_lo10(symbol), %l1
625 ld [%l7 + %l1], %o0, %tie_ld(symbol)
626 add %g7, %o0, %o0, %tie_add(symbol)
627
628 sethi %tie_hi22(symbol), %l1
629 add %l1, %tie_lo10(symbol), %l1
630 ldx [%l7 + %l1], %o0, %tie_ldx(symbol)
631 add %g7, %o0, %o0, %tie_add(symbol)
632 @end example
633
634 And finally, Local Exec:
635
636 @example
637 sethi %tle_hix22(symbol), %l1
638 add %l1, %tle_lox10(symbol), %l1
639 add %g7, %l1, %l1
640 @end example
641
642 When assembling for 64-bit, and a secondary constant addend is
643 specified in an address expression that would normally generate
644 an @code{R_SPARC_LO10} relocation, the assembler will emit an
645 @code{R_SPARC_OLO10} instead.
646
647 @node Sparc-Float
648 @section Floating Point
649
650 @cindex floating point, SPARC (@sc{ieee})
651 @cindex SPARC floating point (@sc{ieee})
652 The Sparc uses @sc{ieee} floating-point numbers.
653
654 @node Sparc-Directives
655 @section Sparc Machine Directives
656
657 @cindex SPARC machine directives
658 @cindex machine directives, SPARC
659 The Sparc version of @code{@value{AS}} supports the following additional
660 machine directives:
661
662 @table @code
663 @cindex @code{align} directive, SPARC
664 @item .align
665 This must be followed by the desired alignment in bytes.
666
667 @cindex @code{common} directive, SPARC
668 @item .common
669 This must be followed by a symbol name, a positive number, and
670 @code{"bss"}. This behaves somewhat like @code{.comm}, but the
671 syntax is different.
672
673 @cindex @code{half} directive, SPARC
674 @item .half
675 This is functionally identical to @code{.short}.
676
677 @cindex @code{nword} directive, SPARC
678 @item .nword
679 On the Sparc, the @code{.nword} directive produces native word sized value,
680 ie. if assembling with -32 it is equivalent to @code{.word}, if assembling
681 with -64 it is equivalent to @code{.xword}.
682
683 @cindex @code{proc} directive, SPARC
684 @item .proc
685 This directive is ignored. Any text following it on the same
686 line is also ignored.
687
688 @cindex @code{register} directive, SPARC
689 @item .register
690 This directive declares use of a global application or system register.
691 It must be followed by a register name %g2, %g3, %g6 or %g7, comma and
692 the symbol name for that register. If symbol name is @code{#scratch},
693 it is a scratch register, if it is @code{#ignore}, it just suppresses any
694 errors about using undeclared global register, but does not emit any
695 information about it into the object file. This can be useful e.g. if you
696 save the register before use and restore it after.
697
698 @cindex @code{reserve} directive, SPARC
699 @item .reserve
700 This must be followed by a symbol name, a positive number, and
701 @code{"bss"}. This behaves somewhat like @code{.lcomm}, but the
702 syntax is different.
703
704 @cindex @code{seg} directive, SPARC
705 @item .seg
706 This must be followed by @code{"text"}, @code{"data"}, or
707 @code{"data1"}. It behaves like @code{.text}, @code{.data}, or
708 @code{.data 1}.
709
710 @cindex @code{skip} directive, SPARC
711 @item .skip
712 This is functionally identical to the @code{.space} directive.
713
714 @cindex @code{word} directive, SPARC
715 @item .word
716 On the Sparc, the @code{.word} directive produces 32 bit values,
717 instead of the 16 bit values it produces on many other machines.
718
719 @cindex @code{xword} directive, SPARC
720 @item .xword
721 On the Sparc V9 processor, the @code{.xword} directive produces
722 64 bit values.
723 @end table
This page took 0.045516 seconds and 4 git commands to generate.