diff options
author | Chung-Ju Wu <jasonwucj@gmail.com> | 2013-10-31 17:08:16 +0000 |
---|---|---|
committer | Chung-Ju Wu <jasonwucj@gcc.gnu.org> | 2013-10-31 17:08:16 +0000 |
commit | 9304f876116aae3d297ab5bf7341749f09406a50 (patch) | |
tree | 5479731a485c268d194925363d10034093696843 /gcc/doc | |
parent | 7214306b3e376bff94b20e468018fb356264b33a (diff) | |
download | gcc-9304f876116aae3d297ab5bf7341749f09406a50.zip gcc-9304f876116aae3d297ab5bf7341749f09406a50.tar.gz gcc-9304f876116aae3d297ab5bf7341749f09406a50.tar.bz2 |
Add new nds32 port, including machine description, libgcc, and documentation.
[gcc/ChangeLog]
* config.gcc (nds32*-*-*): Add nds32 target.
* config/nds32/nds32.c: New file.
* config/nds32/nds32.h: New file.
* config/nds32/nds32.md: New file.
* config/nds32/constants.md: New file.
* config/nds32/constraints.md: New file.
* config/nds32/iterators.md: New file.
* config/nds32/nds32-doubleword.md: New file.
* config/nds32/nds32-intrinsic.md: New file.
* config/nds32/nds32_intrinsic.h: New file.
* config/nds32/nds32-modes.def: New file.
* config/nds32/nds32-multiple.md: New file.
* config/nds32/nds32.opt: New file.
* config/nds32/nds32-opts.h: New file.
* config/nds32/nds32-protos.h: New file.
* config/nds32/nds32-peephole2.md: New file.
* config/nds32/pipelines.md: New file.
* config/nds32/predicates.md: New file.
* config/nds32/t-mlibs: New file.
* common/config/nds32: New directory and files.
* doc/invoke.texi (NDS32 options): Document nds32 specific options.
* doc/md.texi (NDS32 family): Document nds32 specific constraints.
* doc/install.texi (Cross-Compiler-Specific Options): Document
--with-nds32-lib for nds32 target.
* doc/extend.texi (Function Attributes, Target Builtins): Document
nds32 specific attributes.
[libgcc/ChangeLog]
* config.host (nds32*-elf*): Add nds32 target.
* config/nds32 : New directory and files.
[contrib/ChangeLog]
* config-list.mk (nds32le-elf, nds32be-elf): Add nds32 target.
Co-Authored-By: Shiva Chen <shiva0217@gmail.com>
From-SVN: r204269
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/extend.texi | 93 | ||||
-rw-r--r-- | gcc/doc/install.texi | 5 | ||||
-rw-r--r-- | gcc/doc/invoke.texi | 117 | ||||
-rw-r--r-- | gcc/doc/md.texi | 81 |
4 files changed, 293 insertions, 3 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 1d52e42..799ede1 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -2505,6 +2505,12 @@ on data in the eight-bit data area. Note the eight-bit data area is limited to You must use GAS and GLD from GNU binutils version 2.7 or later for this attribute to work correctly. +@item exception +@cindex exception handler functions +Use this attribute on the NDS32 target to indicate that the specified function +is an exception handler. The compiler will generate corresponding sections +for use in an exception handler. + @item exception_handler @cindex exception handler functions on the Blackfin processor Use this attribute on the Blackfin to indicate that the specified function @@ -2965,6 +2971,32 @@ void __attribute__ ((interrupt, use_shadow_register_set, use_debug_exception_return)) v7 (); @end smallexample +On NDS32 target, this attribute is to indicate that the specified function +is an interrupt handler. The compiler will generate corresponding sections +for use in an interrupt handler. You can use the following attributes +to modify the behavior: +@table @code +@item nested +@cindex @code{nested} attribute +This interrupt service routine is interruptible. +@item not_nested +@cindex @code{not_nested} attribute +This interrupt service routine is not interruptible. +@item nested_ready +@cindex @code{nested_ready} attribute +This interrupt service routine is interruptible after @code{PSW.GIE} +(global interrupt enable) is set. This allows interrupt service routine to +finish some short critical code before enabling interrupts. +@item save_all +@cindex @code{save_all} attribute +The system will help save all registers into stack before entering +interrupt handler. +@item partial_save +@cindex @code{partial_save} attribute +The system will help save caller registers into stack before entering +interrupt handler. +@end table + On RL78, use @code{brk_interrupt} instead of @code{interrupt} for handlers intended to be used with the @code{BRK} opcode (i.e.@: those that must end with @code{RETB} instead of @code{RETI}). @@ -3201,9 +3233,10 @@ and newer. @item naked @cindex function without a prologue/epilogue code -Use this attribute on the ARM, AVR, MCORE, MSP430, RL78, RX and SPU ports to indicate that -the specified function does not need prologue/epilogue sequences generated by -the compiler. It is up to the programmer to provide these sequences. The +Use this attribute on the ARM, AVR, MCORE, MSP430, NDS32, RL78, RX and SPU +ports to indicate that the specified function does not need prologue/epilogue +sequences generated by the compiler. +It is up to the programmer to provide these sequences. The only statements that can be safely included in naked functions are @code{asm} statements that do not have operands. All other statements, including declarations of local variables, @code{if} statements, and so @@ -3575,6 +3608,21 @@ safe since the loaders there save EAX, EDX and ECX. (Lazy binding can be disabled with the linker or the loader if desired, to avoid the problem.) +@item reset +@cindex reset handler functions +Use this attribute on the NDS32 target to indicate that the specified function +is a reset handler. The compiler will generate corresponding sections +for use in a reset handler. You can use the following attributes +to provide extra exception handling: +@table @code +@item nmi +@cindex @code{nmi} attribute +Provide a user-defined function to handle NMI exception. +@item warm +@cindex @code{warm} attribute +Provide a user-defined function to handle warm reset exception. +@end table + @item sseregparm @cindex @code{sseregparm} attribute On the Intel 386 with SSE support, the @code{sseregparm} attribute @@ -9131,6 +9179,7 @@ instructions, but allow the compiler to schedule those calls. * MIPS Loongson Built-in Functions:: * Other MIPS Built-in Functions:: * MSP430 Built-in Functions:: +* NDS32 Built-in Functions:: * picoChip Built-in Functions:: * PowerPC Built-in Functions:: * PowerPC AltiVec/VSX Built-in Functions:: @@ -12584,6 +12633,44 @@ handlers and the changes to the status register will only take affect once the handler returns. @end table +@node NDS32 Built-in Functions +@subsection NDS32 Built-in Functions + +These built-in functions are available for the NDS32 target: + +@deftypefn {Built-in Function} void __builtin_nds32_isync (int *@var{addr}) +Insert an ISYNC instruction into the instruction stream where +@var{addr} is an instruction address for serialization. +@end deftypefn + +@deftypefn {Built-in Function} void __builtin_nds32_isb (void) +Insert an ISB instruction into the instruction stream. +@end deftypefn + +@deftypefn {Built-in Function} int __builtin_nds32_mfsr (int @var{sr}) +Return the content of a system register which is mapped by @var{sr}. +@end deftypefn + +@deftypefn {Built-in Function} int __builtin_nds32_mfusr (int @var{usr}) +Return the content of a user space register which is mapped by @var{usr}. +@end deftypefn + +@deftypefn {Built-in Function} void __builtin_nds32_mtsr (int @var{value}, int @var{sr}) +Move the @var{value} to a system register which is mapped by @var{sr}. +@end deftypefn + +@deftypefn {Built-in Function} void __builtin_nds32_mtusr (int @var{value}, int @var{usr}) +Move the @var{value} to a user space register which is mapped by @var{usr}. +@end deftypefn + +@deftypefn {Built-in Function} void __builtin_nds32_setgie_en (void) +Enable global interrupt. +@end deftypefn + +@deftypefn {Built-in Function} void __builtin_nds32_setgie_dis (void) +Disable global interrupt. +@end deftypefn + @node picoChip Built-in Functions @subsection picoChip Built-in Functions diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 308f3e8..fa5d6e5 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -1862,6 +1862,11 @@ This option is only supported for the AVR target. It is not supported for RTEMS configurations, which currently use newlib. The option is supported since version 4.7.2 and is the default in 4.8.0 and newer. +@item --with-nds32-lib=@var{library} +Specifies that @var{library} setting is used for building @file{libgcc.a}. +Currently, the valid @var{library} is @samp{newlib} or @samp{mculib}. +This option is only supported for the NDS32 target. + @item --with-build-time-tools=@var{dir} Specifies where to find the set of target tools (assembler, linker, etc.) that will be used while building GCC itself. This option can be useful diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index ef79df3..e84bca3 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -822,6 +822,20 @@ Objective-C and Objective-C++ Dialects}. @emph{MSP430 Options} @gccoptlist{-msim -masm-hex -mmcu= -mlarge -msmall -mrelax} +@emph{NDS32 Options} +@gccoptlist{-mbig-endian -mlittle-endian @gol +-mreduced-regs -mfull-regs @gol +-mcmov -mno-cmov @gol +-mperf-ext -mno-perf-ext @gol +-mv3push -mno-v3push @gol +-m16bit -mno-16bit @gol +-mgp-direct -mno-gp-direct @gol +-misr-vector-size=@var{num} @gol +-mcache-block-size=@var{num} @gol +-march=@var{arch} @gol +-mforce-fp-as-gp -mforbid-fp-as-gp @gol +-mex9 -mctor-dtor -mrelax} + @emph{PDP-11 Options} @gccoptlist{-mfpu -msoft-float -mac0 -mno-ac0 -m40 -m45 -m10 @gol -mbcopy -mbcopy-builtin -mint32 -mno-int16 @gol @@ -10991,6 +11005,7 @@ platform. * MN10300 Options:: * Moxie Options:: * MSP430 Options:: +* NDS32 Options:: * PDP-11 Options:: * picoChip Options:: * PowerPC Options:: @@ -17792,6 +17807,108 @@ the final link. @end table +@node NDS32 Options +@subsection NDS32 Options +@cindex NDS32 Options + +These options are defined for NDS32 implementations: + +@table @gcctabopt + +@item -mbig-endian +@opindex mbig-endian +Generate code in big-endian mode. + +@item -mlittle-endian +@opindex mlittle-endian +Generate code in little-endian mode. + +@item -mreduced-regs +@opindex mreduced-regs +Use reduced-set registers for register allocation. + +@item -mfull-regs +@opindex mfull-regs +Use full-set registers for register allocation. + +@item -mcmov +@opindex mcmov +Generate conditional move instructions. + +@item -mno-cmov +@opindex mno-cmov +Do not generate conditional move instructions. + +@item -mperf-ext +@opindex mperf-ext +Generate performance extension instructions. + +@item -mno-perf-ext +@opindex mno-perf-ext +Do not generate performance extension instructions. + +@item -mv3push +@opindex mv3push +Generate v3 push25/pop25 instructions. + +@item -mno-v3push +@opindex mno-v3push +Do not generate v3 push25/pop25 instructions. + +@item -m16-bit +@opindex m16-bit +Generate 16-bit instructions. + +@item -mno-16-bit +@opindex mno-16-bit +Do not generate 16-bit instructions. + +@item -mgp-direct +@opindex mgp-direct +Generate GP base instructions directly. + +@item -mno-gp-direct +@opindex mno-gp-direct +Do no generate GP base instructions directly. + +@item -misr-vector-size=@var{num} +@opindex misr-vector-size +Specify the size of each interrupt vector, which must be 4 or 16. + +@item -mcache-block-size=@var{num} +@opindex mcache-block-size +Specify the size of each cache block, +which must be a power of 2 between 4 and 512. + +@item -march=@var{arch} +@opindex march +Specify the name of the target architecture. + +@item -mforce-fp-as-gp +@opindex mforce-fp-as-gp +Prevent $fp being allocated during register allocation so that compiler +is able to force performing fp-as-gp optimization. + +@item -mforbid-fp-as-gp +@opindex mforbid-fp-as-gp +Forbid using $fp to access static and global variables. +This option strictly forbids fp-as-gp optimization +regardless of @option{-mforce-fp-as-gp}. + +@item -mex9 +@opindex mex9 +Use special directives to guide linker doing ex9 optimization. + +@item -mctor-dtor +@opindex mctor-dtor +Enable constructor/destructor feature. + +@item -mrelax +@opindex mrelax +Guide linker to relax instructions. + +@end table + @node PDP-11 Options @subsection PDP-11 Options @cindex PDP-11 Options diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi index 2a5a2e1..ac10a0a 100644 --- a/gcc/doc/md.texi +++ b/gcc/doc/md.texi @@ -3152,6 +3152,87 @@ Memory reference, stack only. @end table +@item NDS32---@file{config/nds32/constraints.md} +@table @code +@item w +LOW register class $r0 to $r7 constraint for V3/V3M ISA. +@item l +LOW register class $r0 to $r7. +@item d +MIDDLE register class $r0 to $r11, $r16 to $r19. +@item h +HIGH register class $r12 to $r14, $r20 to $r31. +@item t +Temporary assist register $ta (i.e.@: $r15). +@item k +Stack register $sp. +@item Iu03 +Unsigned immediate 3-bit value. +@item In03 +Negative immediate 3-bit value in the range of @minus{}7--0. +@item Iu04 +Unsigned immediate 4-bit value. +@item Is05 +Signed immediate 5-bit value. +@item Iu05 +Unsigned immediate 5-bit value. +@item In05 +Negative immediate 5-bit value in the range of @minus{}31--0. +@item Ip05 +Unsigned immediate 5-bit value for movpi45 instruction with range 16--47. +@item Iu06 +Unsigned immediate 6-bit value constraint for addri36.sp instruction. +@item Iu08 +Unsigned immediate 8-bit value. +@item Iu09 +Unsigned immediate 9-bit value. +@item Is10 +Signed immediate 10-bit value. +@item Is11 +Signed immediate 11-bit value. +@item Is15 +Signed immediate 15-bit value. +@item Iu15 +Unsigned immediate 15-bit value. +@item Ic15 +A constant which is not in the range of imm15u but ok for bclr instruction. +@item Ie15 +A constant which is not in the range of imm15u but ok for bset instruction. +@item It15 +A constant which is not in the range of imm15u but ok for btgl instruction. +@item Ii15 +A constant whose compliment value is in the range of imm15u +and ok for bitci instruction. +@item Is16 +Signed immediate 16-bit value. +@item Is17 +Signed immediate 17-bit value. +@item Is19 +Signed immediate 19-bit value. +@item Is20 +Signed immediate 20-bit value. +@item Ihig +The immediate value that can be simply set high 20-bit. +@item Izeb +The immediate value 0xff. +@item Izeh +The immediate value 0xffff. +@item Ixls +The immediate value 0x01. +@item Ix11 +The immediate value 0x7ff. +@item Ibms +The immediate value with power of 2. +@item Ifex +The immediate value with power of 2 minus 1. +@item U33 +Memory constraint for 333 format. +@item U45 +Memory constraint for 45 format. +@item U37 +Memory constraint for 37 format. +@end table + @item PDP-11---@file{config/pdp11/constraints.md} @table @code @item a |