This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Resubmit MicroBlaze support - 1 of 6 - documentation
- From: Michael Eager <eager at eagerm dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 30 Apr 2010 11:03:31 -0700
- Subject: [PATCH] Resubmit MicroBlaze support - 1 of 6 - documentation
This is a resubmission of support for the Xilinx MicroBlaze
processor. AFAIK, all comments on the previous submission
have been addressed.
--
Michael Eager eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306 650-325-8077
2010-04-30 Michael Eager <eager@eagercon.com>
* doc/extend.texi (interrupt_handler): Add MicroBlaze;
(save_volatiles): Add description for MicroBlaze.
* doc/invoke.texi (microblaze options): Add descriptions for
MicroBlaze-specific options.
* doc/contrib.texi: Add credit for MicroBlaze contribution.
* doc/md.texi (microblaze): Describe constraints 'd' and 'z'.
* doc/install.texi (microblaze-*-elf): Add.
Index: gcc/doc/extend.texi
===================================================================
--- gcc/doc/extend.texi (revision 158738)
+++ gcc/doc/extend.texi (working copy)
@@ -2519,8 +2519,8 @@
sequences suitable for use in an interrupt handler when this attribute
is present.
-Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S, and
-SH processors can be specified via the @code{interrupt_handler} attribute.
+Note, interrupt handlers for the Blackfin, H8/300, H8/300H, H8S, MicroBlaze,
+and SH processors can be specified via the @code{interrupt_handler} attribute.
Note, on the AVR, interrupts will be enabled inside the function.
@@ -3041,6 +3041,14 @@
all registers except the stack pointer should be saved in the prologue
regardless of whether they are used or not.
+@item save_volatiles
+@cindex save volatile registers on the MicroBlaze
+Use this attribute on the MicroBlaze to indicate that the function is
+an interrupt handler. All volatile registers (in addition to non-volatile
+registers) will be saved in the function prologue. If the function is a leaf
+function, only volatiles used by the function are saved. A normal function
+return is generated instead of a return from interrupt.
+
@item section ("@var{section-name}")
@cindex @code{section} function attribute
Normally, the compiler places the code it generates in the @code{text} section.
Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi (revision 158738)
+++ gcc/doc/invoke.texi (working copy)
@@ -675,6 +675,13 @@
-mmult -mno-opts -mrepeat -ms -msatur -msdram -msim -msimnovec -mtf @gol
-mtiny=@var{n}}
+@emph{MicroBlaze Options}
+@gccoptlist{-msoft-float -mhard-float -msmall-divides -mcpu=@var{cpu} @gol
+-mmemcpy -mxl-soft-mul -mxl-soft-div -mxl-barrel-shift @gol
+-mxl-pattern-compare -mxl-stack-check -mxl-gp-opt -mno-clearbss @gol
+-mxl-multiply-high -mxl-float-convert -mxl-float-sqrt @gol
+-mxl-mode-@var{app-model}}
+
@emph{MIPS Options}
@gccoptlist{-EL -EB -march=@var{arch} -mtune=@var{arch} @gol
-mips1 -mips2 -mips3 -mips4 -mips32 -mips32r2 @gol
@@ -9632,6 +9639,7 @@
* M68hc1x Options::
* MCore Options::
* MeP Options::
+* MicroBlaze Options::
* MIPS Options::
* MMIX Options::
* MN10300 Options::
@@ -13537,6 +13545,103 @@
@end table
+@node MicroBlaze Options
+@subsection MicroBlaze Options
+@cindex MicroBlaze Options
+
+@table @gcctabopt
+
+@item -msoft-float
+@opindex msoft-float
+Use software emulation for floating point (default).
+
+@item -mhard-float
+@opindex mhard-float
+Use hardware floating point instructions.
+
+@item -mmemcpy
+@opindex mmemcpy
+Don't optimize block moves, use @code{memcpy}.
+
+@item -mno-clearbss
+@opindex mno-clearbss
+This option is deprecated. Use -fno-zero-initialized-in-bss instead.
+
+@item -mcpu=@var{cpu-type}
+@opindex mcpu=
+Use features of and schedule code for given CPU.
+Supported values are in the format vX.YY.Z, where X is a major version, YY
+is the minor version, and Z is compatiblity code. Example values are
+@samp{v3.00.a}, @samp{v4.00.b}, @samp{v5.00.a}, @samp{v5.00.b},
+@samp{v5.00.b}, @samp{v6.00.a}.
+@item -mxl-soft-mul
+@opindex mxl-soft-mul
+Use software multiply emulation (default).
+
+@item -mxl-soft-div
+@opindex mxl-soft-div
+Use software emulation for divides (default).
+
+@item -mxl-barrel-shift
+@opindex mxl-barrel-shift
+Use the hardware barrel shifter.
+
+@item -mxl-pattern-compare
+@opindex mxl-pattern-compare
+Use pattern compare instructions.
+
+@item -msmall-divides
+@opindex msmall-divides
+Use table lookup optimization for small signed integer divisions.
+
+@item -mxl-stack-check
+@opindex mxl-stack-check
+This option is deprecated. Use -fstack-check instead.
+
+@item -mxl-gp-opt
+@opindex mxl-gp-opt
+Use GP relative sdata/sbss sections.
+
+@item -mxl-multiply-high
+@opindex mxl-multiply-high
+Use multiply high instructions for high part of 32x32 multiply.
+
+@item -mxl-float-convert
+@opindex mxl-float-convert
+Use hardware floating point converstion instructions.
+
+@item -mxl-float-sqrt
+@opindex mxl-float-sqrt
+Use hardware floating point square root instruction.
+
+@item -mxl-mode-@var{app-model}
+Select application model @var{app-model}. Valid models are
+@table @samp
+@item executable
+normal executable (default), uses startup code @file{crt0.o}.
+
+@item xmdstub
+for use with Xilinx Microprocessor Debugger (XMD) based
+software intrusive debug agent called xmdstub. This uses startup file
+@file{crt1.o} and sets the start address of the program to be 0x800.
+
+@item bootstrap
+for applications that are loaded using a bootloader.
+This model uses startup file @file{crt2.o} which does not contain a processor
+reset vector handler. This is suitable for transferring control on a
+processor reset to the bootloader rather than the application.
+
+@item novectors
+for applications that do not require any of the
+MicroBlaze vectors. This option may be useful for applications running
+within a monitoring application. This model uses @file{crt3.o} as a startup file.
+@end table
+
+Option @option{-xl-mode-@var{app-model}} is a deprecated alias for
+@option{-mxl-mode-@var{app-model}}.
+
+@end table
+
@node MIPS Options
@subsection MIPS Options
@cindex MIPS options
Index: gcc/doc/contrib.texi
===================================================================
--- gcc/doc/contrib.texi (revision 158738)
+++ gcc/doc/contrib.texi (working copy)
@@ -239,6 +239,9 @@
Zdenek Dvorak for a new loop unroller and various fixes.
@item
+Michael Eager for his work on the Xilinx MicroBlaze port.
+
+@item
Richard Earnshaw for his ongoing work with the ARM@.
@item
Index: gcc/doc/md.texi
===================================================================
--- gcc/doc/md.texi (revision 158738)
+++ gcc/doc/md.texi (working copy)
@@ -2661,8 +2661,16 @@
@item Z
Symbolic references to the control bus.
+@end table
+@item MicroBlaze---@file{config/microblaze/constraints.md}
+@table @code
+@item d
+A general register (@code{r0} to @code{r31}).
+@item z
+A status register (@code{rmsr}, @code{$fcc1} to @code{$fcc7}).
+
@end table
@item MIPS---@file{config/mips/constraints.md}
Index: gcc/doc/install.texi
===================================================================
--- gcc/doc/install.texi (revision 158738)
+++ gcc/doc/install.texi (working copy)
@@ -2916,6 +2916,8 @@
@item
@uref{#mep-x-elf,,mep-*-elf}
@item
+@uref{#microblaze-x-elf,,microblaze-*-elf}
+@item
@uref{#mips-x-x,,mips-*-*}
@item
@uref{#mips-sgi-irix5,,mips-sgi-irix5}
@@ -3763,6 +3765,13 @@
@html
<hr />
@end html
+@heading @anchor{microblaze-x-elf}microblaze-*-elf
+Xilinx MicroBlaze processor.
+This configuration is intended for embedded systems.
+
+@html
+<hr />
+@end html
@heading @anchor{mips-x-x}mips-*-*
If on a MIPS system you get an error message saying ``does not have gp
sections for all it's [sic] sectons [sic]'', don't worry about it. This