; Options for the Blackfin port of the compiler
;
; Copyright (C) 2005, 2007, 2008 Free Software Foundation, Inc.
;
; This file is part of GCC.
;
; GCC is free software; you can redistribute it and/or modify it under
; the terms of the GNU General Public License as published by the Free
; Software Foundation; either version 3, or (at your option) any later
; version.
;
; GCC is distributed in the hope that it will be useful, but WITHOUT
; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
; License for more details.
;
; You should have received a copy of the GNU General Public License
; along with GCC; see the file COPYING3.  If not see
; <http://www.gnu.org/licenses/>.

msim
Target RejectNegative
Use simulator runtime

mcpu=
Target RejectNegative Joined
Specify the name of the target CPU

momit-leaf-frame-pointer
Target Report Mask(OMIT_LEAF_FRAME_POINTER)
Omit frame pointer for leaf functions

mlow64k
Target Report Mask(LOW_64K)
Program is entirely located in low 64k of memory

mcsync-anomaly
Target Report Var(bfin_csync_anomaly) Init(-1)
Work around a hardware anomaly by adding a number of NOPs before a
CSYNC or SSYNC instruction.

mspecld-anomaly
Target Report Var(bfin_specld_anomaly) Init(-1)
Avoid speculative loads to work around a hardware anomaly.

mid-shared-library
Target Report Mask(ID_SHARED_LIBRARY)
Enabled ID based shared library

mleaf-id-shared-library
Target Report Mask(LEAF_ID_SHARED_LIBRARY)
Generate code that won't be linked against any other ID shared libraries,
but may be used as a shared library.

mshared-library-id=
Target RejectNegative Joined UInteger Var(bfin_library_id)
ID of shared library to build

msep-data
Target Report Mask(SEP_DATA)
Enable separate data segment

mlong-calls
Target Report Mask(LONG_CALLS)
Avoid generating pc-relative calls; use indirection

mfast-fp
Target Report Mask(FAST_FP)
Link with the fast floating-point library

mfdpic
Target Report Mask(FDPIC)
Enable Function Descriptor PIC mode

minline-plt
Target Report Mask(INLINE_PLT)
Enable inlining of PLT in function calls

mstack-check-l1
Target Report Mask(STACK_CHECK_L1)
Do stack checking using bounds in L1 scratch memory

mmulticore
Target Report Mask(MULTICORE)
Enable multicore support

mcorea
Target Report Mask(COREA)
Build for Core A

mcoreb
Target Report Mask(COREB)
Build for Core B

msdram
Target Report Mask(SDRAM)
Build for SDRAM

micplb
Target Report Mask(ICPLB)
Assume ICPLBs are enabled at runtime.
