diff options
author | David S. Miller <davem@redhat.com> | 2008-04-23 07:49:33 +0000 |
---|---|---|
committer | David S. Miller <davem@redhat.com> | 2008-04-23 07:49:33 +0000 |
commit | 1a6b486f7396aef713425cd01fb9861e53fb6227 (patch) | |
tree | 005659db874d5536f77947d6226f4b2c467abe4d /gas | |
parent | b863bf13fe4722ea0aa721043285e9011eb0ea30 (diff) | |
download | gdb-1a6b486f7396aef713425cd01fb9861e53fb6227.zip gdb-1a6b486f7396aef713425cd01fb9861e53fb6227.tar.gz gdb-1a6b486f7396aef713425cd01fb9861e53fb6227.tar.bz2 |
opcodes/
* sparc-opc.c (asi_table): Add UltraSPARC and Niagara
extended values.
(prefetch_table): Add missing values.
gas/
* config/tc-sparc.c (v9a_asr_table): Add missing
'stick' and 'stick_cmpr', and document ordering rules
of table.
(tc_gen_reloc): Accept BFD_RELOC_SPARC_PC22 and
BFD_RELOC_SPARC_PC10.
* doc/c-sparc.texi: New section on Sparc constants.
Add documentation for %stick and %stick_cmpr.
gas/testsuite/
* gas/sparc/pc2210.d: New file.
* gas/sparc/pc2210.d: Likewise.
* gas/sparc/sparc.exp: Run new %pc22/%pc10 relocation test.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 10 | ||||
-rw-r--r-- | gas/config/tc-sparc.c | 7 | ||||
-rw-r--r-- | gas/doc/c-sparc.texi | 142 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/pc2210.d | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/pc2210.s | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/sparc/sparc.exp | 1 |
7 files changed, 181 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 3547186..d2b627c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2008-04-23 David S. Miller <davem@davemloft.net> + + * config/tc-sparc.c (v9a_asr_table): Add missing + 'stick' and 'stick_cmpr', and document ordering rules + of table. + (tc_gen_reloc): Accept BFD_RELOC_SPARC_PC22 and + BFD_RELOC_SPARC_PC10. + * doc/c-sparc.texi: New section on Sparc constants. + Add documentation for %stick and %stick_cmpr. + 2008-04-22 H.J. Lu <hongjiu.lu@intel.com> * config/tc-i386.c (md_assemble): Don't check SSE instructions diff --git a/gas/config/tc-sparc.c b/gas/config/tc-sparc.c index 8116c8e..1b657f5 100644 --- a/gas/config/tc-sparc.c +++ b/gas/config/tc-sparc.c @@ -768,13 +768,16 @@ struct priv_reg_entry hpriv_reg_table[] = {"", -1}, /* End marker. */ }; -/* v9a specific asrs. */ +/* v9a specific asrs. This table is ordered by initial + letter, in reverse. */ struct priv_reg_entry v9a_asr_table[] = { {"tick_cmpr", 23}, {"sys_tick_cmpr", 25}, {"sys_tick", 24}, + {"stick_cmpr", 25}, + {"stick", 24}, {"softint", 22}, {"set_softint", 20}, {"pic", 17}, @@ -3398,6 +3401,8 @@ tc_gen_reloc (section, fixp) case BFD_RELOC_32_PCREL_S2: case BFD_RELOC_SPARC13: case BFD_RELOC_SPARC22: + case BFD_RELOC_SPARC_PC22: + case BFD_RELOC_SPARC_PC10: case BFD_RELOC_SPARC_BASE13: case BFD_RELOC_SPARC_WDISP16: case BFD_RELOC_SPARC_WDISP19: diff --git a/gas/doc/c-sparc.texi b/gas/doc/c-sparc.texi index cd0884c..3e172fc 100644 --- a/gas/doc/c-sparc.texi +++ b/gas/doc/c-sparc.texi @@ -121,6 +121,7 @@ for their UltraSPARC and Niagara line of processors. @menu * Sparc-Chars:: Special Characters * Sparc-Regs:: Register Names +* Sparc-Constants:: Constant Names * Sparc-Relocs:: Relocations @end menu @@ -185,10 +186,14 @@ processors: The tick compare register is referred to as @samp{%tick_cmpr}. @item -The system tick register is referred to as @samp{%sys_tick}. +The system tick register is referred to as @samp{%stick}. An alias, +@samp{%sys_tick}, exists but is deprecated and should not be used +by new software. @item -The system tick compare register is referred to as @samp{%sys_tick_cmpr}. +The system tick compare register is referred to as @samp{%stick_cmpr}. +An alias, @samp{%sys_tick_cmpr}, exists but is deprecated and should +not be used by new software. @item The software interrupt register is referred to as @samp{%softint}. @@ -334,7 +339,138 @@ to as @samp{%hver}. @item The hyperprivileged system tick compare register is referred -to as @samp{%hstick_cmpr}. +to as @samp{%hstick_cmpr}. Note that there is no @samp{%hstick} +register, the normal @samp{%stick} is used. +@end itemize + +@node Sparc-Constants +@subsection Constants +@cindex Sparc constants +@cindex constants, Sparc + +Several Sparc instructions take an immediate operand field for +which mnemonic names exist. Two such examples are @samp{membar} +and @samp{prefetch}. Another example are the set of V9 +memory access instruction that allow specification of an +address space identifier. + +The @samp{membar} instruction specifies a memory barrier that is +the defined by the operand which is a bitmask. The supported +mask mnemonics are: + +@itemize @bullet +@item +@samp{#Sync} requests that all operations (including nonmemory +reference operations) appearing prior to the @code{membar} must have +been performed and the effects of any exceptions become visible before +any instructions after the @code{membar} may be initiated. This +corresponds to @code{membar} cmask field bit 2. + +@item +@samp{#MemIssue} requests that all memory reference operations +appearing prior to the @code{membar} must have been performed before +any memory operation after the @code{membar} may be initiated. This +corresponds to @code{membar} cmask field bit 1. + +@item +@samp{#Lookaside} requests that a store appearing prior to the +@code{membar} must complete before any load following the +@code{membar} referencing the same address can be initiated. This +corresponds to @code{membar} cmask field bit 0. + +@item +@samp{#StoreStore} defines that the effects of all stores appearing +prior to the @code{membar} instruction must be visible to all +processors before the effect of any stores following the +@code{membar}. Equivalent to the deprecated @code{stbar} instruction. +This corresponds to @code{membar} mmask field bit 3. + +@item +@samp{#LoadStore} defines all loads appearing prior to the +@code{membar} instruction must have been performed before the effect +of any stores following the @code{membar} is visible to any other +processor. This corresponds to @code{membar} mmask field bit 2. + +@item +@samp{#StoreLoad} defines that the effects of all stores appearing +prior to the @code{membar} instruction must be visible to all +processors before loads following the @code{membar} may be performed. +This corresponds to @code{membar} mmask field bit 1. + +@item +@samp{#LoadLoad} defines that all loads appearing prior to the +@code{membar} instruction must have been performed before any loads +following the @code{membar} may be performed. This corresponds to +@code{membar} mmask field bit 0. + +@end itemize + +These values can be ored together, for example: + +@example +membar #Sync +membar #StoreLoad | #LoadLoad +membar #StoreLoad | #StoreStore +@end example + +The @code{prefetch} and @code{prefetcha} instructions take a prefetch +function code. The following prefetch function code constant +mnemonics are available: + +@itemize @bullet +@item +@samp{#n_reads} requests a prefetch for several reads, and corresponds +to a prefetch function code of 0. + +@samp{#one_read} requests a prefetch for one read, and corresponds +to a prefetch function code of 1. + +@samp{#n_writes} requests a prefetch for several writes (and possibly +reads), and corresponds to a prefetch function code of 2. + +@samp{#one_write} requests a prefetch for one write, and corresponds +to a prefetch function code of 3. + +@samp{#page} requests a prefetch page, and corresponds to a prefetch +function code of 4. + +@samp{#invalidate} requests a prefetch invalidate, and corresponds to +a prefetch function code of 16. + +@samp{#unified} requests a prefetch to the nearest unified cache, and +corresponds to a prefetch function code of 17. + +@samp{#n_reads_strong} requests a strong prefetch for several reads, +and corresponds to a prefetch function code of 20. + +@samp{#one_read_strong} requests a strong prefetch for one read, +and corresponds to a prefetch function code of 21. + +@samp{#n_writes_strong} requests a strong prefetch for several writes, +and corresponds to a prefetch function code of 22. + +@samp{#one_write_strong} requests a strong prefetch for one write, +and corresponds to a prefetch function code of 23. + +Onle one prefetch code may be specified. Here are some examples: + +@example +prefetch [%l0 + %l2], #one_read +prefetch [%g2 + 8], #n_writes +prefetcha [%g1] 0x8, #unified +prefetcha [%o0 + 0x10] %asi, #n_reads +@end example + +The actual behavior of a given prefetch function code is processor +specific. If a processor does not implement a given prefetch +function code, it will treat the prefetch instruction as a nop. + +For instructions that accept an immediate address space identifier, +@code{@value{AS}} provides many mnemonics corresponding to +V9 defined as well as UltraSPARC and Niagara extended values. +For example, @samp{#ASI_P} and @samp{#ASI_BLK_INIT_QUAD_LDD_AIUS}. +See the V9 and processor specific manuals for details. + @end itemize @node Sparc-Relocs diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index d8cfbcf..a331751 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-04-23 David S. Miller <davem@davemloft.net> + + * gas/sparc/pc2210.d: New file. + * gas/sparc/pc2210.d: Likewise. + * gas/sparc/sparc.exp: Run new %pc22/%pc10 relocation test. + 2008-04-18 H.J. Lu <hongjiu.lu@intel.com> * gas/i386/arch-10.d: Updated. diff --git a/gas/testsuite/gas/sparc/pc2210.d b/gas/testsuite/gas/sparc/pc2210.d new file mode 100644 index 0000000..974d3e5 --- /dev/null +++ b/gas/testsuite/gas/sparc/pc2210.d @@ -0,0 +1,13 @@ +#as: -Av7 +#objdump: -dr +#name: pc2210 + +.*: +file format .*sparc.* + +Disassembly of section .text: + +0+ <.text>: + 0: 13 00 00 00 sethi %hi\(0\), %o1 + 0: R_SPARC_PC22 .data + 4: 92 12 60 00 mov %o1, %o1 ! 0 <.text> + 4: R_SPARC_PC10 .data diff --git a/gas/testsuite/gas/sparc/pc2210.s b/gas/testsuite/gas/sparc/pc2210.s new file mode 100644 index 0000000..9190234 --- /dev/null +++ b/gas/testsuite/gas/sparc/pc2210.s @@ -0,0 +1,6 @@ + # Test R_SPARC_PC22 and R_SPARC_PC10 relocations + .data +sym: .word 0 + .text + sethi %pc22(sym), %o1 + or %o1, %pc10(sym), %o1 diff --git a/gas/testsuite/gas/sparc/sparc.exp b/gas/testsuite/gas/sparc/sparc.exp index d3eec93..dfb6249 100644 --- a/gas/testsuite/gas/sparc/sparc.exp +++ b/gas/testsuite/gas/sparc/sparc.exp @@ -55,6 +55,7 @@ if [istarget sparc*-*-*] { run_dump_test "v9branch3" run_dump_test "v9branch4" run_dump_test "v9branch5" + run_dump_test "pc2210" run_list_test "pr4587" "" } |