avr.c (avr_init_stack, [...]): Make static.

* config/avr/avr.c (avr_init_stack, avr_mcu_name): Make static.
	(TARGET_HANDLE_OPTION): Override default.
	(avr_handle_option): New function.
	* config/avr/avr.h (MASK_ALL_DEBUG, MASK_ORDER_1, MASK_INSN_SIZE_DUMP)
	(MASK_ORDER_2, MASK_NO_TABLEJUMP, MASK_INT8, MASK_NO_INTERRUPTS)
	(MASK_CALL_PROLOGUES, MASK_TINY_STACK, MASK_SHORT_CALLS)
	(TARGET_ORDER_1, TARGET_ORDER_2, TARGET_INT8, TARGET_NO_INTERRUPTS)
	(TARGET_INSN_SIZE_DUMP, TARGET_CALL_PROLOGUES, TARGET_TINY_STACK)
	(TARGET_NO_TABLEJUMP, TARGET_SHORT_CALLS, TARGET_ALL_DEBUG)
	(TARGET_SWITCHES, avr_init_stack, avr_mcu_name)
	(TARGET_OPTIONS): Delete.
	* config/avr/avr.opt: New file.

From-SVN: r96719
This commit is contained in:
Richard Sandiford 2005-03-19 08:54:37 +00:00 committed by Richard Sandiford
parent 0eb971bd25
commit 5a41973c52
4 changed files with 105 additions and 53 deletions

View File

@ -1,3 +1,18 @@
2005-03-19 Richard Sandiford <rsandifo@redhat.com>
* config/avr/avr.c (avr_init_stack, avr_mcu_name): Make static.
(TARGET_HANDLE_OPTION): Override default.
(avr_handle_option): New function.
* config/avr/avr.h (MASK_ALL_DEBUG, MASK_ORDER_1, MASK_INSN_SIZE_DUMP)
(MASK_ORDER_2, MASK_NO_TABLEJUMP, MASK_INT8, MASK_NO_INTERRUPTS)
(MASK_CALL_PROLOGUES, MASK_TINY_STACK, MASK_SHORT_CALLS)
(TARGET_ORDER_1, TARGET_ORDER_2, TARGET_INT8, TARGET_NO_INTERRUPTS)
(TARGET_INSN_SIZE_DUMP, TARGET_CALL_PROLOGUES, TARGET_TINY_STACK)
(TARGET_NO_TABLEJUMP, TARGET_SHORT_CALLS, TARGET_ALL_DEBUG)
(TARGET_SWITCHES, avr_init_stack, avr_mcu_name)
(TARGET_OPTIONS): Delete.
* config/avr/avr.opt: New file.
2005-03-18 James E Wilson <wilson@specifixinc.com>
PR c++/19769

View File

@ -48,6 +48,7 @@
/* Maximal allowed offset for an address in the LD command */
#define MAX_LD_OFFSET(MODE) (64 - (signed)GET_MODE_SIZE (MODE))
static bool avr_handle_option (size_t, const char *, int);
static int avr_naked_function_p (tree);
static int interrupt_function_p (tree);
static int signal_function_p (tree);
@ -111,10 +112,10 @@ static int epilogue_size;
static int jump_tables_size;
/* Initial stack value specified by the `-minit-stack=' option */
const char *avr_init_stack = "__stack";
static const char *avr_init_stack = "__stack";
/* Default MCU name */
const char *avr_mcu_name = "avr2";
static const char *avr_mcu_name = "avr2";
/* Preprocessor macros to define depending on MCU type. */
const char *avr_base_arch_macro;
@ -244,6 +245,8 @@ int avr_case_values_threshold = 30000;
#define TARGET_ATTRIBUTE_TABLE avr_attribute_table
#undef TARGET_ASM_FUNCTION_RODATA_SECTION
#define TARGET_ASM_FUNCTION_RODATA_SECTION default_no_function_rodata_section
#undef TARGET_HANDLE_OPTION
#define TARGET_HANDLE_OPTION avr_handle_option
#undef TARGET_INSERT_ATTRIBUTES
#define TARGET_INSERT_ATTRIBUTES avr_insert_attributes
#undef TARGET_SECTION_TYPE_FLAGS
@ -263,6 +266,26 @@ int avr_case_values_threshold = 30000;
struct gcc_target targetm = TARGET_INITIALIZER;
/* Implement TARGET_HANDLE_OPTION. */
static bool
avr_handle_option (size_t code, const char *arg, int value ATTRIBUTE_UNUSED)
{
switch (code)
{
case OPT_minit_stack_:
avr_init_stack = arg;
return true;
case OPT_mmcu_:
avr_mcu_name = arg;
return true;
default:
return true;
}
}
void
avr_override_options (void)
{

View File

@ -42,53 +42,6 @@ Boston, MA 02111-1307, USA. */
} \
while (0)
/* This declaration should be present. */
extern int target_flags;
#define MASK_ALL_DEBUG 0x00000FE0
#define MASK_ORDER_1 0x00001000
#define MASK_INSN_SIZE_DUMP 0x00002000
#define MASK_ORDER_2 0x00004000
#define MASK_NO_TABLEJUMP 0x00008000
#define MASK_INT8 0x00010000
#define MASK_NO_INTERRUPTS 0x00020000
#define MASK_CALL_PROLOGUES 0x00040000
#define MASK_TINY_STACK 0x00080000
#define MASK_SHORT_CALLS 0x00100000
#define TARGET_ORDER_1 (target_flags & MASK_ORDER_1)
#define TARGET_ORDER_2 (target_flags & MASK_ORDER_2)
#define TARGET_INT8 (target_flags & MASK_INT8)
#define TARGET_NO_INTERRUPTS (target_flags & MASK_NO_INTERRUPTS)
#define TARGET_INSN_SIZE_DUMP (target_flags & MASK_INSN_SIZE_DUMP)
#define TARGET_CALL_PROLOGUES (target_flags & MASK_CALL_PROLOGUES)
#define TARGET_TINY_STACK (target_flags & MASK_TINY_STACK)
#define TARGET_NO_TABLEJUMP (target_flags & MASK_NO_TABLEJUMP)
#define TARGET_SHORT_CALLS (target_flags & MASK_SHORT_CALLS)
#define TARGET_ALL_DEBUG (target_flags & MASK_ALL_DEBUG)
#define TARGET_SWITCHES { \
{ "order1", MASK_ORDER_1, NULL }, \
{ "order2", MASK_ORDER_2, NULL }, \
{ "int8", MASK_INT8, N_("Assume int to be 8 bit integer") }, \
{ "no-interrupts", MASK_NO_INTERRUPTS, \
N_("Change the stack pointer without disabling interrupts") }, \
{ "call-prologues", MASK_CALL_PROLOGUES, \
N_("Use subroutines for function prologue/epilogue") }, \
{ "tiny-stack", MASK_TINY_STACK, \
N_("Change only the low 8 bits of the stack pointer") }, \
{ "no-tablejump", MASK_NO_TABLEJUMP, \
N_("Do not generate tablejump insns") }, \
{ "short-calls", MASK_SHORT_CALLS, \
N_("Use rjmp/rcall (limited range) on >8K devices") }, \
{ "size", MASK_INSN_SIZE_DUMP, \
N_("Output instruction sizes to the asm file") }, \
{ "deb", MASK_ALL_DEBUG, NULL }, \
{ "", 0, NULL } }
extern const char *avr_init_stack;
extern const char *avr_mcu_name;
extern const char *avr_base_arch_macro;
extern const char *avr_extra_arch_macro;
extern int avr_mega_p;
@ -98,10 +51,6 @@ extern int avr_asm_only_p;
#define AVR_MEGA (avr_mega_p && !TARGET_SHORT_CALLS)
#define AVR_ENHANCED (avr_enhanced_p)
#define TARGET_OPTIONS { \
{ "init-stack=", &avr_init_stack, N_("Specify the initial stack address"), 0}, \
{ "mcu=", &avr_mcu_name, N_("Specify the MCU name"), 0} }
#define TARGET_VERSION fprintf (stderr, " (GNU assembler syntax)");
#define OVERRIDE_OPTIONS avr_override_options ()

65
gcc/config/avr/avr.opt Normal file
View File

@ -0,0 +1,65 @@
; Options for the ATMEL AVR port of the compiler.
; Copyright (C) 2005 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 2, 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 COPYING. If not, write to the Free
; Software Foundation, 59 Temple Place - Suite 330, Boston, MA
; 02111-1307, USA.
mcall-prologues
Target Report Mask(CALL_PROLOGUES)
Use subroutines for function prologues and epilogues
mmcu=
Target RejectNegative Joined
-mmcu=MCU Select the target MCU
mdeb
Target Report Undocumented Mask(ALL_DEBUG)
minit-stack=
Target RejectNegative Joined
-minit-stack=STACK Use STACK as the initial value of the stack pointer
mint8
Target Report Mask(INT8)
Use an 8-bit 'int' type
mno-interrupts
Target Report RejectNegative Mask(NO_INTERRUPTS)
Change the stack pointer without disabling interrupts
mno-tablejump
Target Report RejectNegative Mask(NO_TABLEJUMP)
Do not generate tablejump insns
morder1
Target Report Undocumented Mask(ORDER_1)
morder2
Target Report Undocumented Mask(ORDER_2)
mshort-calls
Target Report Mask(SHORT_CALLS)
Use rjmp/rcall (limited range) on >8K devices
msize
Target Report Mask(INSN_SIZE_DUMP)
Output instruction sizes to the asm file
mtiny-stack
Target Report Mask(TINY_STACK)
Change only the low 8 bits of the stack pointer