2022-01-02 06:30:17 +08:00
|
|
|
@c Copyright (C) 2012-2022 Free Software Foundation, Inc.
|
Add support for the C_SKY series of processors.
This patch series is a new binutils port for C-SKY processors, including support for both the V1 and V2 processor variants. V1 is derived from the MCore architecture while V2 is substantially different, with mixed 16- and 32-bit instructions, a larger register set, a different (but overlapping) ABI, etc. There is support for bare-metal ELF targets and Linux with both glibc and uClibc.
This code is being contributed jointly by C-SKY Microsystems and Mentor Graphics. C-SKY is responsible for the technical content and has proposed Lifang Xia and Yunhai Shang as port maintainers. (Note that C-SKY does have a corporate copyright assignment on file with the FSF.) Mentor Graphics' role has been cleaning up the code, adding documentation and additional test cases, etc, to address issues we anticipated reviewers would complain about.
bfd * Makefile.am (ALL_MACHINES, ALL_MACHINES_CFILES): Add C-SKY.
(BFD32_BACKENDS, BFD_BACKENDS_CFILES): Likewise.
* Makefile.in: Regenerated.
* archures.c (enum bfd_architecture): Add bfd_arch_csky and
related bfd_mach defines.
(bfd_csky_arch): Declare.
(bfd_archures_list): Add C-SKY.
* bfd-in.h (elf32_csky_build_stubs): Declare.
(elf32_csky_size_stubs): Declare.
(elf32_csky_next_input_section: Declare.
(elf32_csky_setup_section_lists): Declare.
* bfd-in2.h: Regenerated.
* config.bfd: Add C-SKY.
* configure.ac: Likewise.
* configure: Regenerated.
* cpu-csky.c: New file.
* elf-bfd.h (enum elf_target_id): Add C-SKY.
* elf32-csky.c: New file.
* libbfd.h: Regenerated.
* reloc.c: Add C-SKY relocations.
* targets.c (csky_elf32_be_vec, csky_elf32_le_vec): Declare.
(_bfd_target_vector): Add C-SKY target vector entries.
binutils* readelf.c: Include elf/csky.h.
(guess_is_rela): Handle EM_CSKY.
(dump_relocations): Likewise.
(get_machine_name): Likewise.
(is_32bit_abs_reloc): Likewise.
include * dis-asm.h (csky_symbol_is_valid): Declare.
* opcode/csky.h: New file.
opcodes * Makefile.am (TARGET_LIBOPCODES_CFILES): Add csky-dis.c.
* Makefile.in: Regenerated.
* configure.ac: Add C-SKY.
* configure: Regenerated.
* csky-dis.c: New file.
* csky-opc.h: New file.
* disassemble.c (ARCH_csky): Define.
(disassembler, disassemble_init_for_target): Add case for ARCH_csky.
* disassemble.h (print_insn_csky, csky_get_disassembler): Declare.
gas * Makefile.am (TARGET_CPU_CFILES): Add entry for C-SKY.
(TARGET_CPU_HFILES, TARGET_ENV_HFILES): Likewise.
* Makefile.in: Regenerated.
* config/tc-csky.c: New file.
* config/tc-csky.h: New file.
* config/te-csky_abiv1.h: New file.
* config/te-csky_abiv1_linux.h: New file.
* config/te-csky_abiv2.h: New file.
* config/te-csky_abiv2_linux.h: New file.
* configure.tgt: Add C-SKY.
* doc/Makefile.am (CPU_DOCS): Add entry for C-SKY.
* doc/Makefile.in: Regenerated.
* doc/all.texi: Set CSKY feature.
* doc/as.texi (Overview): Add C-SKY options.
(Machine Dependencies): Likewise.
* doc/c-csky.texi: New file.
* testsuite/gas/csky/*: New test cases.
ld * Makefile.am (ALL_EMULATION_SOURCES): Add C-SKY emulations.
(ecskyelf.c, ecskyelf_linux.c): New rules.
* Makefile.in: Regenerated.
* configure.tgt: Add C-SKY.
* emulparams/cskyelf.sh: New file.
* emulparams/cskyelf_linux.sh: New file.
* emultempl/cskyelf.em: New file.
* gen-doc.texi: Add C-SKY.
* ld.texi: Likewise.
(Options specific to C-SKY targets): New section.
* testsuite/ld-csky/*: New tests.
2018-07-30 19:24:14 +08:00
|
|
|
@c This is part of the GAS manual.
|
|
|
|
@c For copying conditions, see the file as.texinfo.
|
|
|
|
@c man end
|
|
|
|
@ifset GENERIC
|
|
|
|
@page
|
|
|
|
@node C-SKY-Dependent
|
|
|
|
@chapter C-SKY Dependent Features
|
|
|
|
@end ifset
|
|
|
|
@ifclear GENERIC
|
|
|
|
@node Machine Dependencies
|
|
|
|
@chapter C-SKY Dependent Features
|
|
|
|
@end ifclear
|
|
|
|
|
|
|
|
@cindex C-SKY support
|
|
|
|
@menu
|
|
|
|
* C-SKY Options:: Options
|
|
|
|
* C-SKY Syntax:: Syntax
|
|
|
|
@end menu
|
|
|
|
|
|
|
|
@node C-SKY Options
|
|
|
|
@section Options
|
|
|
|
@cindex C-SKY options
|
|
|
|
@cindex options for C-SKY
|
|
|
|
|
|
|
|
@c man begin OPTIONS
|
|
|
|
@table @gcctabopt
|
|
|
|
|
|
|
|
@cindex @code{march} command-line option, C-SKY
|
|
|
|
@item -march=@var{archname}
|
|
|
|
Assemble for architecture @var{archname}. The @option{--help} option
|
|
|
|
lists valid values for @var{archname}.
|
|
|
|
|
|
|
|
@cindex @code{mcpu} command-line option, C-SKY
|
|
|
|
@item -mcpu=@var{cpuname}
|
|
|
|
Assemble for architecture @var{cpuname}. The @option{--help} option
|
|
|
|
lists valid values for @var{cpuname}.
|
|
|
|
|
|
|
|
@cindex @code{EL} command-line option, C-SKY
|
|
|
|
@cindex @code{mlittle-endian} command-line option, C-SKY
|
|
|
|
@item -EL
|
|
|
|
@itemx -mlittle-endian
|
|
|
|
Generate little-endian output.
|
|
|
|
|
|
|
|
@cindex @code{EB} command-line option, C-SKY
|
|
|
|
@cindex @code{mbig-endian} command-line option, C-SKY
|
|
|
|
@item -EB
|
|
|
|
@itemx -mbig-endian
|
|
|
|
Generate big-endian output.
|
|
|
|
|
|
|
|
@cindex @code{fpic} command-line option, C-SKY
|
|
|
|
@cindex @code{pic} command-line option, C-SKY
|
|
|
|
@item -fpic
|
|
|
|
@itemx -pic
|
|
|
|
Generate position-independent code.
|
|
|
|
|
|
|
|
@cindex @code{mljump} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-ljump} command-line option, C-SKY
|
|
|
|
@item -mljump
|
|
|
|
@itemx -mno-ljump
|
|
|
|
Enable/disable transformation of the short branch instructions
|
|
|
|
@code{jbf}, @code{jbt}, and @code{jbr} to @code{jmpi}.
|
|
|
|
This option is for V2 processors only.
|
|
|
|
It is ignored on CK801 and CK802 targets, which do not support the @code{jmpi}
|
|
|
|
instruction, and is enabled by default for other processors.
|
|
|
|
|
|
|
|
@cindex @code{mbranch-stub} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-branch-stub} command-line option, C-SKY
|
|
|
|
@item -mbranch-stub
|
|
|
|
@itemx -mno-branch-stub
|
|
|
|
Pass through @code{R_CKCORE_PCREL_IMM26BY2} relocations for @code{bsr}
|
|
|
|
instructions to the linker.
|
|
|
|
|
|
|
|
This option is only available for bare-metal C-SKY V2 ELF targets,
|
|
|
|
where it is enabled by default. It cannot be used in code that will be
|
|
|
|
dynamically linked against shared libraries.
|
|
|
|
|
|
|
|
@cindex @code{force2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{mforce2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{no-force2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-force2bsr} command-line option, C-SKY
|
|
|
|
@item -force2bsr
|
|
|
|
@itemx -mforce2bsr
|
|
|
|
@itemx -no-force2bsr
|
|
|
|
@itemx -mno-force2bsr
|
|
|
|
Enable/disable transformation of @code{jbsr} instructions to @code{bsr}.
|
|
|
|
This option is always enabled (and @option{-mno-force2bsr} is ignored)
|
|
|
|
for CK801/CK802 targets. It is also always enabled when
|
|
|
|
@option{-mbranch-stub} is in effect.
|
|
|
|
|
|
|
|
@cindex @code{jsri2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{mjsri2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{no-jsri2bsr} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-jsri2bsr} command-line option, C-SKY
|
|
|
|
@item -jsri2bsr
|
|
|
|
@itemx -mjsri2bsr
|
|
|
|
@itemx -no-jsri2bsr
|
|
|
|
@itemx -mno-jsri2bsr
|
|
|
|
Enable/disable transformation of @code{jsri} instructions to @code{bsr}.
|
|
|
|
This option is enabled by default.
|
|
|
|
|
|
|
|
@cindex @code{mnolrw} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-lrw} command-line option, C-SKY
|
|
|
|
@item -mnolrw
|
|
|
|
@itemx -mno-lrw
|
|
|
|
Enable/disable transformation of @code{lrw} instructions into a
|
|
|
|
@code{movih}/@code{ori} pair.
|
|
|
|
|
|
|
|
@cindex @code{melrw} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-elrw} command-line option, C-SKY
|
|
|
|
@item -melrw
|
|
|
|
@itemx -mno-elrw
|
|
|
|
Enable/disable extended @code{lrw} instructions.
|
|
|
|
This option is enabled by default for CK800-series processors.
|
|
|
|
|
|
|
|
@cindex @code{mlaf} command-line option, C-SKY
|
|
|
|
@cindex @code{mliterals-after-func} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-laf} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-literals-after-func} command-line option, C-SKY
|
|
|
|
@item -mlaf
|
|
|
|
@itemx -mliterals-after-func
|
|
|
|
@itemx -mno-laf
|
|
|
|
@itemx -mno-literals-after-func
|
|
|
|
Enable/disable placement of literal pools after each function.
|
|
|
|
|
|
|
|
@cindex @code{mlabr} command-line option, C-SKY
|
|
|
|
@cindex @code{mliterals-after-br} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-labr} command-line option, C-SKY
|
|
|
|
@cindex @code{mnoliterals-after-br} command-line option, C-SKY
|
|
|
|
@item -mlabr
|
|
|
|
@itemx -mliterals-after-br
|
|
|
|
@itemx -mno-labr
|
|
|
|
@itemx -mnoliterals-after-br
|
|
|
|
Enable/disable placement of literal pools after unconditional branches.
|
|
|
|
This option is enabled by default.
|
|
|
|
|
|
|
|
@cindex @code{mistack} command-line option, C-SKY
|
|
|
|
@cindex @code{mno-istack} command-line option, C-SKY
|
|
|
|
@item -mistack
|
|
|
|
@itemx -mno-istack
|
|
|
|
Enable/disable interrupt stack instructions. This option is enabled by
|
|
|
|
default on CK801, CK802, and CK802 processors.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
|
|
|
|
The following options explicitly enable certain optional instructions.
|
|
|
|
These features are also enabled implicitly by using @code{-mcpu=} to specify
|
|
|
|
a processor that supports it.
|
|
|
|
|
|
|
|
@table @gcctabopt
|
|
|
|
@cindex @code{mhard-float} command-line option, C-SKY
|
|
|
|
@item -mhard-float
|
|
|
|
Enable hard float instructions.
|
|
|
|
|
|
|
|
@cindex @code{mmp} command-line option, C-SKY
|
|
|
|
@item -mmp
|
|
|
|
Enable multiprocessor instructions.
|
|
|
|
|
|
|
|
@cindex @code{mcp} command-line option, C-SKY
|
|
|
|
@item -mcp
|
|
|
|
Enable coprocessor instructions.
|
|
|
|
|
|
|
|
@cindex @code{mcache} command-line option, C-SKY
|
|
|
|
@item -mcache
|
|
|
|
Enable cache prefetch instruction.
|
|
|
|
|
|
|
|
@cindex @code{msecurity} command-line option, C-SKY
|
|
|
|
@item -msecurity
|
|
|
|
Enable C-SKY security instructions.
|
|
|
|
|
|
|
|
@cindex @code{mtrust} command-line option, C-SKY
|
|
|
|
@item -mtrust
|
|
|
|
Enable C-SKY trust instructions.
|
|
|
|
|
|
|
|
@cindex @code{mdsp} command-line option, C-SKY
|
|
|
|
@item -mdsp
|
|
|
|
Enable DSP instructions.
|
|
|
|
|
|
|
|
@cindex @code{medsp} command-line option, C-SKY
|
|
|
|
@item -medsp
|
|
|
|
Enable enhanced DSP instructions.
|
|
|
|
|
|
|
|
@cindex @code{mvdsp} command-line option, C-SKY
|
|
|
|
@item -mvdsp
|
|
|
|
Enable vector DSP instructions.
|
|
|
|
|
|
|
|
@end table
|
|
|
|
@c man end
|
|
|
|
|
|
|
|
@node C-SKY Syntax
|
|
|
|
@section Syntax
|
|
|
|
|
|
|
|
@code{@value{AS}} implements the standard C-SKY assembler syntax
|
|
|
|
documented in the
|
|
|
|
@cite{C-SKY V2 CPU Applications Binary Interface Standards Manual}.
|