blob: 97493ea9f3e22a0e8e5d006d2c749e0a76981d26 (
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
|
#
# Config file for a Radstone Technology Plc. PowerPC 60x based VME board
#
# $Id: ppcn_60x.cfg
#
include $(RTEMS_ROOT)/make/custom/default.cfg
RTEMS_CPU=powerpc
RTEMS_CPU_MODEL=mpc750
# This is the actual bsp directory used during the build process.
RTEMS_BSP_FAMILY=mcp750
# 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.
#
# PPCN_60X_USE_DINK (ppcn_60x_bsp)
# PPCN_60X_USE_NONE (ppcn_60x_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 STACK_CHECKER_ON 1" >>$@
@echo "#define STACK_CHECKER_REPORT_USAGE 1" >>$@
@echo "/* #define RTEMS_DEBUG 1 */" >>$@
@echo "#define PPCN_60X_USE_DINK 0" >>$@
@echo "#define PPCN_60X_USE_NONE 1" >>$@
@echo "#define PPC_USE_DATA_CACHE 1" >>$@
@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 1" >>$@
endef
# This contains the compiler options necessary to select the CPU model
# and (hopefully) optimize for it.
#
# NOTE : cheking egcc 1.1.1 source code shows that the last know processor
# is the 604 model and that this is the default generation option.
#
# CPU_CFLAGS = -mcpu=750
# optimize flag: typically -0, could use -O4 or -fast
# -O4 is ok for RTEMS
# NOTE2: some level of -O may be actually required by inline assembler (at least
# -O2 so far.
# NOTE2 Apparently nobody really knows the status or r2 and r13.
# As far as I know, small data are pointer impose a very specific compliation
# model => not used.
# Currently the sdata2 and sbss2 sections are empty => r2 is not used...
CFLAGS_OPTIMIZE_V=-O4 -mmultiple -mstring -mstrict-align -mcpu=750
#CFLAGS_OPTIMIZE_V=-O4 -fno-keep-inline-functions -fvolatile-global -fvolatile -mstrict-align -mcpu=750
# The following is a ld command file which works without using the
# -specs system in gcc 2.8. IT HAS NEVER BEEN TESTED WITH THIS BSP!!!
# $(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)
# $(CC) -mmvme -mrtems -nostartfiles -mcpu=603 \
# -o $(basename $@).exe -L $(PROJECT_RELEASE)/lib \
# $(START_FILE) $(LINK_OBJS) \
# $(LD_LIBS) \
# -Wl,-\( -Wl,-lc -Wl,-lrtemsall -Wl,-lgcc -Wl,-\)
define make-exe
$(CC) $(CPPFLAGS) $(CFLAGS) -o $(basename $@).exe $(LINK_OBJS) $(LINK_LIBS)
$(NM) -g -n $(basename $@).exe > $(basename $@).num
$(SIZE) $(basename $@).exe
$(CP) $(basename $@).exe $(PROJECT_ROOT)/powerpc-rtems/c/mcp750/lib/libbsp/powerpc/mcp750/bootloader/$(ARCH); \
cd $(PROJECT_ROOT)/powerpc-rtems/c/mcp750/lib/libbsp/powerpc/mcp750/bootloader; \
$(MAKE) bootloader BINARY_LOADED=$(basename $@).exe; \
COMPLETE_FILE_NAME=$(basename $@).exe ;\
echo $${COMPLETE_FILE_NAME} ;\
FILE_NAME=`basename $${COMPLETE_FILE_NAME}` ;\
echo $${FILE_NAME} ;\
mkdir -p $(PROJECT_ROOT)/$(RTEMS_BSP)/bin ;\
$(CP) bootloader $(PROJECT_ROOT)/$(RTEMS_BSP)/bin/$${FILE_NAME}
endef
# Miscellaneous additions go here
# No start file
START_BASE=
# Let the HWAPI know which set of drivers to build
DRIVER_ARCHITECTURE=vmebus
|