Next:Blackfin Options, Previous:ARM Options, Up:Machine-Dependent Options [Contents][Index]
These options are defined for AVR implementations:
-mmcu=mcu ¶Specify the AVR instruction set architecture (ISA) or device type.The default for this option is avr2.
The following AVR devices and ISAs are supported.Note: A complete device support consists ofstartup codecrtmcu.o, a device headeravr/io*.h,a device librarylibmcu.a and adevice-specs filespecs-mcu. Only the latter is provided by the compileraccording the supportedmcus below. The rest is supportedbyAVR-LibC, or by means ofatpack filesfrom the hardware manufacturer.
avr2“Classic” devices with up to 8 KiB of program memory.
mcu =attiny22,attiny26,at90s2313,at90s2323,at90s2333,at90s2343,at90s4414,at90s4433,at90s4434,at90c8534,at90s8515,at90s8535.
avr25“Classic” devices with up to 8 KiB of program memory and with theMOVW instruction.
mcu =attiny13,attiny13a,attiny24,attiny24a,attiny25,attiny261,attiny261a,attiny2313,attiny2313a,attiny43u,attiny44,attiny44a,attiny45,attiny48,attiny441,attiny461,attiny461a,attiny4313,attiny84,attiny84a,attiny85,attiny87,attiny88,attiny828,attiny841,attiny861,attiny861a,ata5272,ata6616c,at86rf401.
avr3“Classic” devices with 16 KiB up to 64 KiB of program memory.
mcu =at76c711,at43usb355.
avr31“Classic” devices with 128 KiB of program memory.
mcu =atmega103,at43usb320.
avr35“Classic” devices with 16 KiB up to 64 KiB of program memory and with theMOVW instruction.
mcu =attiny167,attiny1634,atmega8u2,atmega16u2,atmega32u2,ata5505,ata6617c,ata664251,at90usb82,at90usb162.
avr4“Enhanced” devices with up to 8 KiB of program memory.
mcu =atmega48,atmega48a,atmega48p,atmega48pa,atmega48pb,atmega8,atmega8a,atmega8hva,atmega88,atmega88a,atmega88p,atmega88pa,atmega88pb,atmega8515,atmega8535,ata5795,ata6285,ata6286,ata6289,ata6612c,at90pwm1,at90pwm2,at90pwm2b,at90pwm3,at90pwm3b,at90pwm81.
avr5“Enhanced” devices with 16 KiB up to 64 KiB of program memory.
mcu =atmega16,atmega16a,atmega16hva,atmega16hva2,atmega16hvb,atmega16hvbrevb,atmega16m1,atmega16u4,atmega161,atmega162,atmega163,atmega164a,atmega164p,atmega164pa,atmega165,atmega165a,atmega165p,atmega165pa,atmega168,atmega168a,atmega168p,atmega168pa,atmega168pb,atmega169,atmega169a,atmega169p,atmega169pa,atmega32,atmega32a,atmega32c1,atmega32hvb,atmega32hvbrevb,atmega32m1,atmega32u4,atmega32u6,atmega323,atmega324a,atmega324p,atmega324pa,atmega324pb,atmega325,atmega325a,atmega325p,atmega325pa,atmega328,atmega328p,atmega328pb,atmega329,atmega329a,atmega329p,atmega329pa,atmega3250,atmega3250a,atmega3250p,atmega3250pa,atmega3290,atmega3290a,atmega3290p,atmega3290pa,atmega406,atmega64,atmega64a,atmega64c1,atmega64hve,atmega64hve2,atmega64m1,atmega64rfr2,atmega640,atmega644,atmega644a,atmega644p,atmega644pa,atmega644rfr2,atmega645,atmega645a,atmega645p,atmega649,atmega649a,atmega649p,atmega6450,atmega6450a,atmega6450p,atmega6490,atmega6490a,atmega6490p,ata5790,ata5790n,ata5791,ata6613c,ata6614q,ata5782,ata5831,ata8210,ata8510,ata5787,ata5835,ata5700m322,ata5702m322,at90pwm161,at90pwm216,at90pwm316,at90can32,at90can64,at90scr100,at90usb646,at90usb647,at94k,m3000.
avr51“Enhanced” devices with 128 KiB of program memory.
mcu =atmega128,atmega128a,atmega128rfa1,atmega128rfr2,atmega1280,atmega1281,atmega1284,atmega1284p,atmega1284rfr2,at90can128,at90usb1286,at90usb1287.
avr6“Enhanced” devices with 3-byte PC, i.e. with more than 128 KiB of program memory.
mcu =atmega256rfr2,atmega2560,atmega2561,atmega2564rfr2.
avrxmega2“XMEGA” devices with more than 8 KiB and up to 64 KiB of program memory.
mcu =atxmega8e5,atxmega16a4,atxmega16a4u,atxmega16c4,atxmega16d4,atxmega16e5,atxmega32a4,atxmega32a4u,atxmega32c3,atxmega32c4,atxmega32d3,atxmega32d4,atxmega32e5,avr64da28,avr64da28s,avr64da32,avr64da32s,avr64da48,avr64da48s,avr64da64,avr64da64s,avr64db28,avr64db32,avr64db48,avr64db64,avr64dd14,avr64dd20,avr64dd28,avr64dd32,avr64du28,avr64du32,avr64ea28,avr64ea32,avr64ea48,avr64sd28,avr64sd32,avr64sd48.
avrxmega3“XMEGA” devices with up to 64 KiB of combined program memory and RAM, and with program memory visible in the RAM address space.
mcu =attiny202,attiny204,attiny212,attiny214,attiny402,attiny404,attiny406,attiny412,attiny414,attiny416,attiny416auto,attiny417,attiny424,attiny426,attiny427,attiny804,attiny806,attiny807,attiny814,attiny816,attiny817,attiny824,attiny826,attiny827,attiny1604,attiny1606,attiny1607,attiny1614,attiny1616,attiny1617,attiny1624,attiny1626,attiny1627,attiny3214,attiny3216,attiny3217,attiny3224,attiny3226,attiny3227,atmega808,atmega809,atmega1608,atmega1609,atmega3208,atmega3209,atmega4808,atmega4809,avr16dd14,avr16dd20,avr16dd28,avr16dd32,avr16du14,avr16du20,avr16du28,avr16du32,avr16ea28,avr16ea32,avr16ea48,avr16eb14,avr16eb20,avr16eb28,avr16eb32,avr16la14,avr16la20,avr16la28,avr16la32,avr32da28,avr32da28s,avr32da32,avr32da32s,avr32da48,avr32da48s,avr32db28,avr32db32,avr32db48,avr32dd14,avr32dd20,avr32dd28,avr32dd32,avr32du14,avr32du20,avr32du28,avr32du32,avr32ea28,avr32ea32,avr32ea48,avr32eb14,avr32eb20,avr32eb28,avr32eb32,avr32la14,avr32la20,avr32la28,avr32la32,avr32sd20,avr32sd28,avr32sd32.
avrxmega4“XMEGA” devices with more than 64 KiB and up to 128 KiB of program memory.
mcu =atxmega64a3,atxmega64a3u,atxmega64a4u,atxmega64b1,atxmega64b3,atxmega64c3,atxmega64d3,atxmega64d4,avr128da28,avr128da28s,avr128da32,avr128da32s,avr128da48,avr128da48s,avr128da64,avr128da64s,avr128db28,avr128db32,avr128db48,avr128db64.
avrxmega5“XMEGA” devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of RAM.
mcu =atxmega64a1,atxmega64a1u.
avrxmega6“XMEGA” devices with more than 128 KiB of program memory.
mcu =atxmega128a3,atxmega128a3u,atxmega128b1,atxmega128b3,atxmega128c3,atxmega128d3,atxmega128d4,atxmega192a3,atxmega192a3u,atxmega192c3,atxmega192d3,atxmega256a3,atxmega256a3b,atxmega256a3bu,atxmega256a3u,atxmega256c3,atxmega256d3,atxmega384c3,atxmega384d3.
avrxmega7“XMEGA” devices with more than 128 KiB of program memory and more than 64 KiB of RAM.
mcu =atxmega128a1,atxmega128a1u,atxmega128a4u.
avrtiny“Reduced Tiny” Tiny core devices with only 16 general purpose registers and 512 B up to 4 KiB of program memory.
mcu =attiny4,attiny5,attiny9,attiny10,attiny102,attiny104,attiny20,attiny40.
avr1This ISA is implemented by the minimal AVR core and supported for assembler only.
mcu =attiny11,attiny12,attiny15,attiny28,at90s1200.
-mabsdata ¶Assume that all data in static storage can be accessed by LDS / STSinstructions. This option has only an effect on reduced Tiny devices likeATtiny40. See also theabsdatavariable attribute.
-mcvt ¶Use acompact vector table. Some devices support a CVTwith only four entries: 0=Reset, 1=NMI, 2=Prio1 IRQ, 3=Prio0 IRQs.This option will link startup code fromcrtmcu-cvt.oinstead of the usualcrtmcu.o.Apart from providing a compact vector table, the startup code will set bitCPUINT_CTRLA.CPUINT_CVT which enables the CVT on the device.
When you do not want the startup code to setCPUINT_CTRLA.CPUINT_CVT,then you can satisfy symbol__init_cvt so that the respectivecode is no more pulled in fromlibmcu.a.For example, you can link with-Wl,--defsym,__init_cvt=0.
The CVT startup code is available sinceAVR-LibC v2.3.
-mdouble=bits ¶-mlong-double=bitsSet the size (in bits) of thedouble orlong double type,respectively. Possible values forbits are 32 and 64.Whether or not a specific value forbits is allowed depends onthe--with-double= and--with-long-double=configure options,and the same applies for the default values of the options.
-mgas-isr-prologues ¶Interrupt service routines (ISRs) may use the__gcc_isr pseudoinstruction supported by GNU Binutils.If this option is on, the feature can still be disabled for individualISRs by means of theno_gccisrfunction attribute. This feature is activated per defaultif optimization is on (but not with-Og, seeOptions That Control Optimization),and if GNU Binutils supportPR21683.
-mint8 ¶Assumeint to be 8-bit integer. This affects the sizes of all types: achar is 1 byte, anint is 1 byte, along is 2 bytes,andlong long is 4 bytes. Please note that this option does notconform to the C standards, but it results in smaller codesize.
-mmain-is-OS_task ¶Do not save registers inmain. The effect is the same likeattaching attributeOS_tasktomain. It is activated per default if optimization is on.
-mno-call-main ¶Don’t runmain by means of
XCALL mainXJMP exit
Instead, putmain in section.init9so that no call is required.By setting this option the user asserts thatmain will not return.
This option can be used for devices with very limited resources in orderto save a few bytes of code and stack space. It will work as expected sinceAVR-LibC v2.3.With older versions, there will be no performance gain.
-mno-interrupts ¶Generated code is not compatible with hardware interrupts.Code size is smaller.
-mrelax ¶Try to replaceCALL resp.JMP instruction by the shorterRCALL resp.RJMP instruction if applicable.Setting-mrelax just adds the--mlink-relax option tothe assembler’s command line and the--relax option to thelinker’s command line.
Jump relaxing is performed by the linker because jump offsets are notknown before code is located. Therefore, the assembler code generated by thecompiler is the same, but the instructions in the executable maydiffer from instructions in the assembler code.
Relaxing must be turned on if linker stubs are needed, see thesection onEIND and linker stubs below.
-mpmem-wrap-around ¶Enable program counter wrap-around in linker relaxation.
-mrodata-in-ram ¶-mno-rodata-in-ramLocate the.rodata sections for read-only data in RAM resp.in program memory.For most devices, there is no choice and this option acts ratherlike an assertion.
Since v14 and for the AVR64* and AVR128* devices,.rodatais located in flash memory per default, provided the required GNU Binutilssupport (PR31124) is available.In that case,-mrodata-in-ram can be used to return to the oldlayout with.rodata in RAM.
-mtiny-stack ¶Only change the lower 8 bits of the stack pointer.
-mfract-convert-truncate ¶Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
-nodevicelib ¶Don’t link against AVR-LibC’s device specific librarylibmcu.a.
Notice that since AVR-LibC v2.3, that library contains code that isessential for the correct functioning of a program. In particular,it contains parts of the startup code like:__init_spto initialize the stack pointer with symbol__stack,__init_cvtto set up the hardware to use a compact vector table with-mcvt,__call_mainto callmain andexit, and__do_flmap_initto set up FLMAP according to symbol__flmap.
-nodevicespecs ¶Don’t add-specs=device-specs/specs-mcu to the compiler driver’scommand line. The user takes responsibility for supplying the sub-processeslike compiler proper, assembler and linker with appropriate command lineoptions. This means that the user has to supply her private device specsfile by means of-specs=path-to-specs-file. There is nomore need for option-mmcu=mcu.
This option can also serve as a replacement for the older way ofspecifying custom device-specs files that needed-Bsome-path to point to a directorywhich contains a folder nameddevice-specs which contains a specs file namedspecs-mcu, wheremcu was specified by-mmcu=mcu.
-Waddr-space-convert ¶Warn about conversions between address spaces in the case where theresulting address space is not contained in the incoming address space.
-Wmisspelled-isr ¶Warn if the ISR is misspelled, i.e. without __vector prefix.Enabled by default.
EIND and Devices with More Than 128 Ki Bytes of FlashRAMPD,RAMPX,RAMPY andRAMPZ Special Function RegistersThe following options are pure optimization options.Options-mgas-isr-prologues,-mmain-is-OS_task,-mno-call-main and-mrelax from above are onlyalmost optimization options, since there are rare occasionswhere their different code generation matters.
-maccumulate-args ¶Accumulate outgoing function arguments and acquire/release the neededstack space for outgoing function arguments once in functionprologue/epilogue. Without this option, outgoing arguments are pushedbefore calling a function and popped afterwards.See also the-fdefer-popoptimization option.
Popping the arguments after the function call can be expensive onAVR so that accumulating the stack space might lead to smallerexecutables because arguments need not be removed from thestack after such a function call.
This option can lead to reduced code size for functions that performseveral calls to functions that get their arguments on the stack likecalls to printf-like functions.
-mbranch-cost=cost ¶Set the branch costs for conditional branch instructions tocost. Reasonable values forcost are small, non-negativeintegers. The default branch cost is 0.
-mcall-prologues ¶Functions prologues/epilogues are expanded as calls to appropriatesubroutines. Code size is smaller.
-mfuse-add ¶-mno-fuse-add-mfuse-add=levelOptimize indirect memory accesses on reduced Tiny devices.The default useslevel=1 for optimizations-Ogand-O1, andlevel=2 for higher optimizations.Valid values forlevel are0,1 and2.
-mfuse-move ¶-mno-fuse-move-mfuse-move=levelRun a post reload optimization pass that tries to fuse move instructionsand to split multi-byte instructions into 8-bit operations.The default useslevel=3 for optimization-O1,andlevel=23 for higher optimizations.Valid values forlevel are in the range0 …23which is a 3:2:2:2 mixed radix value. Each digit controls someaspect of the optimization.
-mfuse-move2 ¶Run a post combine optimization pass that tries to fuse move instructions.
-mstrict-X ¶Use address registerX in a way proposed by the hardware. This meansthatX is only used in indirect, post-increment orpre-decrement addressing.
Without this option, theX register may be used in the same wayasY orZ which then is emulated by additionalinstructions.For example, loading a value withX+const addressing with asmall non-negativeconst < 64 to a registerRn isperformed as
adiw r26, const ; X += constldRn, X ;Rn = *Xsbiw r26, const ; X -= const
-msplit-bit-shift ¶Split multi-byte shifts with a constant offset into a shift witha byte offset and a residual shift with a non-byte offset.This optimization is turned on per default for-O2 and higher,including-Os but excluding-Oz.Splitting of shifts with a constant offset that isa multiple of 8 is controlled by-mfuse-move.
-msplit-ldst ¶Split multi-byte loads and stores into several byte loads and stores.This optimization is turned on per default for-O2 and higher.
-muse-nonzero-bits ¶Enable optimizations that are only possible when some bits in aregister are always zero.This optimization is turned on per default for-O2 and higher.
EIND and Devices with More Than 128 Ki Bytes of Flash ¶Pointers in the implementation are 16 bits wide.The address of a function or label is represented as word address sothat indirect jumps and calls can target any code address in therange of 64 Ki words.
In order to facilitate indirect jump on devices with more than 128 Kibytes of program memory space, there is a special function register calledEIND that serves as most significant part of the target addresswhenEICALL orEIJMP instructions are used.
Indirect jumps and calls on these devices are handled as follows bythe compiler and are subject to some limitations:
EIND.EIND implicitly inEICALL/EIJMPinstructions or might readEIND directly in order to emulate anindirect call/jump by means of aRET instruction.EIND never changes during the startupcode or during the application. In particular,EIND is notsaved/restored in function or interrupt service routineprologue/epilogue.EIND = 0.If code is supposed to work for a setup withEIND != 0, a customlinker script has to be used in order to place the sections whosename start with.trampolines into the segment whereEINDpoints to.EIND.Notice that startup code is a blend of code from libgcc and AVR-LibC.For the impact of AVR-LibC onEIND, see theAVR-LibC user manual.EINDearly, for example by means of initialization code located insection.init3. Such code runs prior to general startup codethat initializes RAM and calls constructors, but after the bitof startup code from AVR-LibC that setsEIND to the segmentwhere the vector table is located.#include <avr/io.h>static void__attribute__((section(".init3"),naked,used,no_instrument_function))init3_set_eind (void){ __asm volatile ("ldi r24,pm_hh8(__trampolines_start)\n\t" "out %i0,r24" :: "n" (&EIND) : "r24","memory");}The__trampolines_start symbol is defined in the linker script.
gs modifier(short forgenerate stubs) like so:LDI r24, lo8(gs(func))LDI r25, hi8(gs(func))
gs modifiers for code labels in thefollowing situations:gs() modifier explained above.int main (void){ /* Call function at word address 0x2 */ return ((int(*)(void)) 0x2)();}Instead, a stub has to be set up, i.e. the function has to be calledthrough a symbol (func_4 in the example):
int main (void){ extern int func_4 (void); /* Call function at byte address 0x4 */ return func_4();}and the application be linked with-Wl,--defsym,func_4=0x4.Alternatively,func_4 can be defined in the linker script.
RAMPD,RAMPX,RAMPY andRAMPZ Special Function Registers ¶Some AVR devices support memories larger than the 64 KiB rangethat can be accessed with 16-bit pointers. To access memory locationsoutside this 64 KiB range, the content of aRAMPregister is used as high part of the address:TheX,Y,Z address register is concatenatedwith theRAMPX,RAMPY,RAMPZ special functionregister, respectively, to get a wide address. Similarly,RAMPD is used together with direct addressing.
RAMP special functionregisters with zero.__flash is used, thenRAMPZ is setas needed before the operation.RAMPZ to accomplish an operation,RAMPZis reset to zero after the operation.RAMP register, the ISRprologue/epilogue saves/restores that SFR and initializes it withzero in case the ISR code might (implicitly) use it.RAMP registers,you must reset it to zero after the access.GCC defines several built-in macros so that the user code can testfor the presence or absence of features. Almost any of the followingbuilt-in macros are deduced from device capabilities and thustriggered by the-mmcu= command-line option.
For even more AVR-specific built-in macros seeAVR Named Address Spaces andAVR Built-in Functions.
__AVR_ARCH__Build-in macro that resolves to a decimal number that identifies thearchitecture and depends on the-mmcu=mcu option.Possible values are:
2,25,3,31,35,4,5,51,6
formcu=avr2,avr25,avr3,avr31,avr35,avr4,avr5,avr51,avr6,
respectively and
100,102,103,104,105,106,107
formcu=avrtiny,avrxmega2,avrxmega3,avrxmega4,avrxmega5,avrxmega6,avrxmega7, respectively.Ifmcu specifies a device, this built-in macro is setaccordingly. For example, with-mmcu=atmega8 the macro isdefined to4.
__AVR_Device__Setting-mmcu=device defines this built-in macro which reflectsthe device’s name. For example,-mmcu=atmega8 defines thebuilt-in macro__AVR_ATmega8__,-mmcu=attiny261a defines__AVR_ATtiny261A__, etc.
The built-in macros’ names followthe scheme__AVR_Device__ whereDevice isthe device name as from the AVR user manual. The difference betweenDevice in the built-in macro anddevice in-mmcu=device is that the latter is always lowercase.
Ifdevice is not a device but only a core architecture like‘avr51’, this macro is not defined.
__AVR_DEVICE_NAME__Setting-mmcu=device defines this built-in macro tothe device’s name. For example, with-mmcu=atmega8 the macrois defined toatmega8.
Ifdevice is not a device but only a core architecture like‘avr51’, this macro is not defined.
__AVR_CVT__The code is being compiled with option-mcvt to use acompact vector table.
__AVR_XMEGA__The device / architecture belongs to the XMEGA family of devices.
__AVR_HAVE_ADIW__The device has theADIW andSBIW instructions.
__AVR_HAVE_ELPM__The device has theELPM instruction.
__AVR_HAVE_ELPMX__The device has theELPM Rn,Z andELPMRn,Z+ instructions.
__AVR_HAVE_LPMX__The device has theLPM Rn,Z andLPM Rn,Z+ instructions.
__AVR_HAVE_MOVW__The device has theMOVW instruction to perform 16-bitregister-register moves.
__AVR_HAVE_MUL__The device has a hardware multiplier.
__AVR_HAVE_JMP_CALL__The device has theJMP andCALL instructions.This is the case for devices with more than 8 KiB of programmemory.
__AVR_HAVE_EIJMP_EICALL____AVR_3_BYTE_PC__The device has theEIJMP andEICALL instructions.This is the case for devices with more than 128 KiB of program memory.This also means that the program counter(PC) is 3 bytes wide.
__AVR_2_BYTE_PC__The program counter (PC) is 2 bytes wide. This is the case for deviceswith up to 128 KiB of program memory.
__AVR_HAVE_8BIT_SP____AVR_HAVE_16BIT_SP__The stack pointer (SP) register is treated as 8-bit respectively16-bit register by the compiler.The definition of these macros is affected by-mtiny-stack.
__AVR_HAVE_SPH____AVR_SP8__The device has the SPH (high part of stack pointer) special functionregister or has an 8-bit stack pointer, respectively.The definition of these macros is affected by-mmcu= andin the cases of-mmcu=avr2 and-mmcu=avr25 alsoby-msp8.
__AVR_HAVE_RAMPD____AVR_HAVE_RAMPX____AVR_HAVE_RAMPY____AVR_HAVE_RAMPZ__The device has theRAMPD,RAMPX,RAMPY,RAMPZ special function register, respectively.
__NO_INTERRUPTS__This macro reflects the-mno-interrupts command-line option.
__AVR_ERRATA_SKIP____AVR_ERRATA_SKIP_JMP_CALL__Some AVR devices (AT90S8515, ATmega103) must not skip 32-bitinstructions because of a hardware erratum. Skip instructions areSBRS,SBRC,SBIS,SBIC andCPSE.The second macro is only defined if__AVR_HAVE_JMP_CALL__ is alsoset.
__AVR_ISA_RMW__The device has Read-Modify-Write instructions (XCH, LAC, LAS and LAT).
__AVR_SFR_OFFSET__=offsetInstructions that can address I/O special function registers directlylikeIN,OUT,SBI, etc. may use a differentaddress as if addressed by an instruction to access RAM likeLDorSTS. This offset depends on the device architecture and hasto be subtracted from the RAM address in order to get therespective I/O address.
__AVR_SHORT_CALLS__The-mshort-calls command line option is set.
__AVR_PM_BASE_ADDRESS__=addrSome devices support reading from flash memory by means ofLD*instructions. The flash memory is seen in the data address spaceat an offset of__AVR_PM_BASE_ADDRESS__. If this macrois not defined, this feature is not available. If defined,the address space is linear and there is no need to put.rodata into RAM. This is handled by the default linkerdescription file, and is currently available foravrtiny andavrxmega3. Even more convenient,there is no need to use address spaces like__flash orfeatures like attributeprogmem andpgm_read_*.
__AVR_HAVE_FLMAP__This macro is defined provided the following conditions are met:
NVMCTRL_CTRLB.FLMAP bitfield.This applies to the AVR64* and AVR128* devices.This implies the compiler was configured with GNU Binutils that implementPR31124.
__AVR_RODATA_IN_RAM__This macro is undefined when the code is compiled for a core architecture.
When the code is compiled for a device, the macro is defined to 1when the.rodata sections for read-only data is located in RAM;and defined to 0, otherwise.
__WITH_AVRLIBC__The compiler is configured to be used together with AVR-LibC.See the--with-avrlibc configure option.
__HAVE_SIGNAL_N__The compiler supports thesignal(num) andinterrupt(num)function attributeswith an argumentnum that specifies the number of theinterrupt service routine.
__HAVE_DOUBLE_MULTILIB__Defined if-mdouble= acts as a multilib option.
__HAVE_DOUBLE32____HAVE_DOUBLE64__Defined if the compiler supports 32-bit double resp. 64-bit double.The actual layout is specified by option-mdouble=.
__DEFAULT_DOUBLE__The size in bits ofdouble if-mdouble= is not set.To test the layout ofdouble in a program, use the built-inmacro__SIZEOF_DOUBLE__.
__HAVE_LONG_DOUBLE32____HAVE_LONG_DOUBLE64____HAVE_LONG_DOUBLE_MULTILIB____DEFAULT_LONG_DOUBLE__Same as above, but forlong double instead ofdouble.
__WITH_DOUBLE_COMPARISON__Reflects the--with-double-comparison={tristate|bool|libf7}configure optionand is defined to2 or3.
__WITH_LIBF7_LIBGCC____WITH_LIBF7_MATH____WITH_LIBF7_MATH_SYMBOLS__Reflects the--with-libf7={libgcc|math|math-symbols}configure option.
The following options are used internally by the compiler and to communicatebetween device specs files and the compiler proper. You don’t need to set theseoptions by hand, in particular they are not optimization options.Using these options in the wrong way may lead to sub-optimal or wrong code.They are documented for completeness, and in order to get a betterunderstanding ofdevice specsfiles.
-mn-flash=num ¶Assume that the flash memory has a size ofnum times 64 KiB.This determines which__flashN address spaces are available.
-mflmap ¶The device has theFLMAP bit field located in special functionregisterNVMCTRL_CTRLB.
-mrmw ¶Assume that the device supports the Read-Modify-WriteinstructionsXCH,LAC,LAS andLAT.
-mshort-calls ¶Assume thatRJMP andRCALL can target the wholeprogram memory. This option is used for multilib generation and selectionfor the devices from architectureavrxmega3.
-mskip-bug ¶Generate code without skips (CPSE,SBRS,SBRC,SBIS,SBIC) over 32-bit instructions.
-msp8 ¶Treat the stack pointer register as an 8-bit register,i.e. assume the high byte of the stack pointer is zero.This option is used by the compiler to select andbuild multilibs for architecturesavr2 andavr25.These architectures mix devices with and withoutSPH.
Next:Blackfin Options, Previous:ARM Options, Up:Machine-Dependent Options [Contents][Index]