diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2016-12-27 22:43:38 +0200 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2016-12-31 12:03:35 +1030 |
commit | 93f11b16ec1f5775c7f6c32b4a39d6dd0fb0c92a (patch) | |
tree | 239a723ef7f1ce40a785067b4fda0a66d770aef4 /gas/doc/c-pru.texi | |
parent | 2b100bb5cf206f9254453a00e4b48e32d3584625 (diff) | |
download | binutils-gdb-93f11b16ec1f5775c7f6c32b4a39d6dd0fb0c92a.tar.gz |
PRU GAS Port
* NEWS: Mention new PRU target.
* Makefile.am: Add PRU target.
* config/obj-elf.c: Ditto.
* configure.tgt: Ditto.
* config/tc-pru.c: New file.
* config/tc-pru.h: New file.
* doc/Makefile.am: Add documentation for PRU GAS port.
* doc/all.texi, Ditto.
* doc/as.texinfo: Ditto.
* doc/c-pru.texi: Document PRU GAS options.
* Makefile.in: Regenerate.
* doc/Makefile.in: Regenerate.
* po/POTFILES.in: Regenerate.
* testsuite/gas/pru/alu.d: New file for PRU GAS testsuite.
* testsuite/gas/pru/alu.s: Ditto.
* testsuite/gas/pru/branch.d: Ditto.
* testsuite/gas/pru/branch.s: Ditto.
* testsuite/gas/pru/illegal.l: Ditto.
* testsuite/gas/pru/illegal.s: Ditto.
* testsuite/gas/pru/ldi.d: Ditto.
* testsuite/gas/pru/ldi.s: Ditto.
* testsuite/gas/pru/ldst.d: Ditto.
* testsuite/gas/pru/ldst.s: Ditto.
* testsuite/gas/pru/loop.d: Ditto.
* testsuite/gas/pru/loop.s: Ditto.
* testsuite/gas/pru/misc.d: Ditto.
* testsuite/gas/pru/misc.s: Ditto.
* testsuite/gas/pru/pru.exp: Ditto.
* testsuite/gas/pru/pseudo.d: Ditto.
* testsuite/gas/pru/pseudo.s: Ditto.
* testsuite/gas/pru/warn_reglabel.l: Ditto.
* testsuite/gas/pru/warn_reglabel.s: Ditto.
* testsuite/gas/pru/xfr.d: Ditto.
* testsuite/gas/pru/xfr.s: Ditto.
* testsuite/gas/lns/lns.exp: Mark lns-common-1-alt variant for PRU.
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
Diffstat (limited to 'gas/doc/c-pru.texi')
-rw-r--r-- | gas/doc/c-pru.texi | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/gas/doc/c-pru.texi b/gas/doc/c-pru.texi new file mode 100644 index 00000000000..6aba8b4c904 --- /dev/null +++ b/gas/doc/c-pru.texi @@ -0,0 +1,150 @@ +@c Copyright (C) 2015-2016 Free Software Foundation, Inc. +@c This is part of the GAS manual. +@c For copying conditions, see the file as.texinfo. +@c man end +@ifset GENERIC +@page +@node PRU-Dependent +@chapter PRU Dependent Features +@end ifset + +@cindex PRU support +@menu +* PRU Options:: Options +* PRU Syntax:: Syntax +* PRU Relocations:: Relocations +* PRU Directives:: PRU Machine Directives +* PRU Opcodes:: Opcodes +@end menu + +@node PRU Options +@section Options +@cindex PRU options +@cindex options for PRU + +@c man begin OPTIONS +@table @gcctabopt + +@cindex @code{mlink-relax} command line option, PRU +@item -mlink-relax +Assume that LD would optimize LDI32 instructions by checking the upper +16 bits of the @var{expression}. If they are all zeros, then LD would +shorten the LDI32 instruction to a single LDI. In such case @code{@value{AS}} +will output DIFF relocations for diff expressions. + +@cindex @code{mno-link-relax} command line option, PRU +@item -mno-link-relax +Assume that LD would not optimize LDI32 instructions. As a consequence, +DIFF relocations will not be emitted. + +@cindex @code{mno-warn-regname-label} command line option, PRU +@item -mno-warn-regname-label +Do not warn if a label name matches a register name. Usually assembler +programmers will want this warning to be emitted. C compilers may want +to turn this off. + +@end table +@c man end + +@node PRU Syntax +@section Syntax +@menu +* PRU Chars:: Special Characters +@end menu + + +@node PRU Chars +@subsection Special Characters + +@cindex line comment character, PRU +@cindex PRU line comment character +@samp{#} and @samp{;} are the line comment characters. + + +@node PRU Relocations +@section PRU Machine Relocations + +@cindex machine relocations, PRU +@cindex PRU machine relocations + +@table @code + +@cindex @code{pmem} directive, PRU +@item %pmem(@var{expression}) +Convert @var{expression} from byte-address to a +word-address. In other words, shift right by two. + +@item %label(@var{expression}) +Mark the given operand as a label. This is useful if you need to jump to +a label that matches a register name. + +@smallexample +@group +r1: + jmp r1 ; Will jump to register R1 + jmp %label(r1) ; Will jump to label r1 +@end group +@end smallexample + +@end table + + +@node PRU Directives +@section PRU Machine Directives + +@cindex machine directives, PRU +@cindex PRU machine directives + +@table @code + +@cindex @code{align} directive, PRU +@item .align @var{expression} [, @var{expression}] +This is the generic @code{.align} directive, however +this aligns to a power of two. + +@cindex @code{word} directive, PRU +@item .word @var{expression} +Create an aligned constant 4 bytes in size. + +@cindex @code{dword} directive, PRU +@item .dword @var{expression} +Create an aligned constant 8 bytes in size. + +@cindex @code{2byte} directive, PRU +@item .2byte @var{expression} +Create an unaligned constant 2 bytes in size. + +@cindex @code{4byte} directive, PRU +@item .4byte @var{expression} +Create an unaligned constant 4 bytes in size. + +@cindex @code{8byte} directive, PRU +@item .8byte @var{expression} +Create an unaligned constant 8 bytes in size. + +@cindex @code{16byte} directive, PRU +@item .16byte @var{expression} +Create an unaligned constant 16 bytes in size. + +@cindex @code{set no_warn_regname_label} directive, PRU +@item .set no_warn_regname_label +Do not output warnings when a label name matches a register name. Equivalent +to passing the @code{-mno-warn-regname-label} command line option. + +@end table + +@node PRU Opcodes +@section Opcodes + +@cindex PRU opcodes +@cindex opcodes for PRU +@code{@value{AS}} implements all the standard PRU core V3 opcodes in the +original pasm assembler. Older cores are not supported by @code{@value{AS}}. + +GAS also implements the LDI32 pseudo instruction for loading a 32-bit +immediate value into a register. + +@smallexample + ldi32 sp, __stack_top + ldi32 r14, 0x12345678 +@end smallexample |