summaryrefslogtreecommitdiffstats
path: root/make/custom/score603e.cfg
blob: 7dff53f7a2812c010fc5861d4c70d93d861a8faa (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#
#  Config file for a PowerPC 603e based Vista VMEbus Single Board Computer.
#  This BSP should work with the following models:
#
#     + Vista SCORE 603e
#
#  $Id$
#

RTEMS_CPU=powerpc
RTEMS_CPU_MODEL=ppc603e

# Set the default generation if it has not been overridden
ifeq ($(SCORE603E_GENERATION),)
SCORE603E_GENERATION=2
endif


# This is the actual bsp directory used during the build process.

RTEMS_BSP_FAMILY=score603e

ifeq ($(SCORE603E_GENERATION),1)
RTEMS_BSP=score603e_g1

else
ifeq ($(SCORE603E_GENERATION),2)
RTEMS_BSP=score603e

endif # generation 2
endif # generation 1

include $(RTEMS_ROOT)/make/custom/default.cfg

#  This section makes the target dependent options file.

#  NDEBUG (C library)
#     if defined asserts do not generate code.  This is commonly used
#     as a command line option.
#
#  RTEMS_TEST_NO_PAUSE (RTEMS tests)
#     do not pause between screens of output in the rtems tests
#
#  RTEMS_DEBUG (RTEMS)
#     If defined, debug checks in RTEMS and support library code are enabled.
#
#  CONSOLE_USE_POLLED     (score603e_bsp)
#  CONSOLE_USE_INTERRUPTS (score603e_bsp)
#     The score603e console driver has the structure to operate in either
#     polled or interrupt mode.  However both modes only trap to the
#     monitor currently.
#
#  SCORE603E_USE_SDS           (score603e_bsp)
#  SCORE603E_USE_OPEN_FIRMWARE (score603e_bsp)
#  SCORE603E_USE_NONE          (score603e_bsp)
#     The Score603e board can be configured with 3 ROM monitors.  Only two
#     are appropriate for use with RTEMS.  Set exactly one of these to "1"
#     to indicate which ROM monitor is on the board you are using.
#
#  PPC_VECTOR_FILE_BASE (ppc)
#     This defines the base address of the exception table.
#     NOTE: Vectors are actually at 0xFFF00000 but file starts at offset 0x0100
#
#  PPC_ABI (ppc)
#     This defines the calling convention (Application Binary Interface)
#     used in this configuration.  EABI is the only one supported.
#
#  PPC_ASM (ppc)
#     This defines the assembly language format used in this configuration.
#     ELF is the only one supported.
#
#  PPC_USE_SPRG (RTEMS PowerPC port)
#     If defined, then the PowerPC specific code in RTEMS will use some
#     of the special purpose registers to slightly optimize interrupt
#     response time.  The use of these registers can conflict with 
#     other tools like debuggers.
#
#  PPC_USE_DATA_CACHE (RTEMS PowerPC port)
#     If defined, then the PowerPC specific code in RTEMS will use 
#     data cache instructions to optimize the context switch code.
#     This code can conflict with debuggers or emulators.
#

define make-target-options
	@echo "/* #define NDEBUG 1 */ "                              >>$@
	@echo "#define RTEMS_TEST_NO_PAUSE 1"                        >>$@
	@echo "/* #define RTEMS_DEBUG  1 */"                         >>$@
	@echo "#define CONSOLE_USE_INTERRUPTS 0"                     >>$@
	@echo "#define INITIALIZE_COM_PORTS 1"                       >>$@
	@echo "#define SCORE603E_GENERATION $(SCORE603E_GENERATION)" >>$@
	@echo "#define SCORE603E_USE_SDS  0"                         >>$@
	@echo "#define SCORE603E_USE_NONE 0"                         >>$@
	@echo "#define SCORE603E_USE_DINK 1"                         >>$@
	@echo "#define SCORE603E_USE_OPEN_FIRMWARE 0"                >>$@
	@echo "#define PPC_USE_DATA_CACHE 0"                         >>$@
	@echo "#define PPC_VECTOR_FILE_BASE 0x0100"                  >>$@
	@echo "#define PPC_ABI PPC_ABI_EABI"                         >>$@
	@echo "#define PPC_ASM PPC_ASM_ELF"                          >>$@
	@echo "#define PPC_USE_SPRG  0"                              >>$@
	@echo "#define HAS_PMC_PSC8  0"                              >>$@
endef

#  This contains the compiler options necessary to select the CPU model
#  and (hopefully) optimize for it. 
#
CPU_CFLAGS = -mcpu=603

# optimize flag: typically -0, could use -O4 or -fast
# -O4 is ok for RTEMS
# NOTE: some level of -O may be actually required by inline assembler
CFLAGS_OPTIMIZE_V=-O4 -fno-keep-inline-functions
# CFLAGS_OPTIMIZE_V=-O0 

# The following is a linkcmds file which will work without using the
# -specs system in gcc 2.8.
#       $(LD) $(XLDFLAGS) -T $(LINKCMDS) \
#         -o $@ -u atexit -u __vectors -u download_entry $(LINK_FILES)
#       $(LD) $(XLDFLAGS) -Ttext 0x20000 \
#         -o $@ -u atexit -u __vectors -u download_entry $(LINK_FILES)

ifeq ($(RTEMS_USE_GCC272),yes)
define make-exe
	@echo gcc 2.7.2 style linking not supported by score603e
	@exit 1 
endef
else
define make-exe
	$(CC) $(CPPFLAGS) $(CFLAGS) \
	    -o $(basename $@).elf $(LINK_OBJS) $(LINK_LIBS)
	$(NM) -g -n $(basename $@).elf > $(basename $@).num
	$(SIZE) $(basename $@).elf
	$(OBJCOPY) -O srec $(basename $@).elf $(basename $@).s1
	sed -e 's/.$$//' $(basename $@).s1 | \
	  $(PACKHEX) >$(basename $@).exe
	rm -f $(basename $@).s1
endef
endif

# Miscellaneous additions go here

DRIVER_ARCHITECTURE=vmebus