; SYSV4 options for PPC port.
;
; Copyright (C) 2005-2021 Free Software Foundation, Inc.
; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
;
; 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/>.

mcall-
Target RejectNegative Joined Var(rs6000_abi_name)
-mcall-ABI	Select ABI calling convention.

msdata=
Target RejectNegative Joined Var(rs6000_sdata_name)
-msdata=[none,data,sysv,eabi]	Select method for sdata handling.

mreadonly-in-sdata
Target Var(rs6000_readonly_in_sdata) Init(1) Save
Allow readonly data in sdata.

mtls-size=
Target RejectNegative Joined Var(rs6000_tls_size) Enum(rs6000_tls_size)
-mtls-size=[16,32]	Specify bit size of immediate TLS offsets.

Enum
Name(rs6000_tls_size) Type(int)

EnumValue
Enum(rs6000_tls_size) String(16) Value(16)

EnumValue
Enum(rs6000_tls_size) String(32) Value(32)

EnumValue
Enum(rs6000_tls_size) String(64) Value(64)

mbit-align
Target Var(TARGET_NO_BITFIELD_TYPE) Save
Align to the base type of the bit-field.

mstrict-align
Target Mask(STRICT_ALIGN) Var(rs6000_isa_flags)
Align to the base type of the bit-field.
Don't assume that unaligned accesses are handled by the system.

mrelocatable
Target Mask(RELOCATABLE) Var(rs6000_isa_flags)
Produce code relocatable at runtime.

mrelocatable-lib
Target
Produce code relocatable at runtime.

mlittle-endian
Target RejectNegative Mask(LITTLE_ENDIAN) Var(rs6000_isa_flags)
Produce little endian code.

mlittle
Target RejectNegative Mask(LITTLE_ENDIAN) Var(rs6000_isa_flags)
Produce little endian code.

mbig-endian
Target RejectNegative InverseMask(LITTLE_ENDIAN) Var(rs6000_isa_flags)
Produce big endian code.

mbig
Target RejectNegative InverseMask(LITTLE_ENDIAN) Var(rs6000_isa_flags)
Produce big endian code.

;; FIXME: This does nothing.  What should be done?
mno-toc
Target RejectNegative
No description yet.

mtoc
Target RejectNegative
No description yet.

mprototype
Target Var(target_prototype) Save
Assume all variable arg functions are prototyped.

;; FIXME: Does nothing.
mno-traceback
Target RejectNegative
No description yet.

meabi
Target Mask(EABI) Var(rs6000_isa_flags)
Use EABI.

mbit-word
Target Var(TARGET_NO_BITFIELD_WORD) Save
Allow bit-fields to cross word boundaries.

mregnames
Target Var(rs6000_regnames) Save
Use alternate register names.

;; This option does nothing and only exists because the compiler
;; driver passes all -m* options through.
msdata
Target
Use default method for sdata handling.

msim
Target RejectNegative
Link with libsim.a, libc.a and sim-crt0.o.

mads
Target RejectNegative
Link with libads.a, libc.a and crt0.o.

myellowknife
Target RejectNegative
Link with libyk.a, libc.a and crt0.o.

mmvme
Target RejectNegative
Link with libmvme.a, libc.a and crt0.o.

memb
Target RejectNegative
Set the PPC_EMB bit in the ELF flags header.

mshlib
Target RejectNegative
No description yet.

m64
Target RejectNegative Negative(m32) Mask(64BIT) Var(rs6000_isa_flags)
Generate 64-bit code.

m32
Target RejectNegative Negative(m64) InverseMask(64BIT) Var(rs6000_isa_flags)
Generate 32-bit code.

mnewlib
Target RejectNegative
No description yet.

msecure-plt
Target RejectNegative Var(secure_plt, 1) Save
Generate code to use a non-exec PLT and GOT.

mbss-plt
Target RejectNegative Var(secure_plt, 0) Save
Generate code for old exec BSS PLT.

mpltseq
Target Var(rs6000_pltseq) Init(1) Save
Use inline plt sequences to implement long calls and -fno-plt.

mgnu-attribute
Target Var(rs6000_gnu_attr) Init(1) Save
Emit .gnu_attribute tags.
