Subversion Repositories HelenOS

Rev

Rev 455 | Rev 458 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 455 Rev 457
Line 27... Line 27...
27
#
27
#
28
 
28
 
29
## Toolchain configuration
29
## Toolchain configuration
30
#
30
#
31
 
31
 
32
BFD_NAME = elf32-i386
-
 
33
BFD_ARCH = mips
32
BFD_ARCH = mips
34
TARGET = mipsel-linux-gnu
33
TARGET = mipsel-linux-gnu
35
TOOLCHAIN_DIR = /usr/local/mipsel/bin
34
TOOLCHAIN_DIR = /usr/local/mipsel/bin
36
 
35
 
37
## Make some default assumptions
36
## Make some default assumptions
38
#
37
#
39
 
38
 
40
ifndef CPU
39
ifndef MACHINE
41
	CPU = pentium4
40
	MACHINE = msim
42
endif
41
endif
43
 
42
 
-
 
43
KERNEL_LOAD_ADDRESS = 0x80100000
-
 
44
CFLAGS += -mno-abicalls -G 0 -fno-zero-initialized-in-bss
-
 
45
DEFS += -DMACHINE=${MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS}
-
 
46
 
44
## Accepted CPUs
47
## Accepted MACHINEs
45
#
48
#
46
 
49
 
47
ifeq ($(CPU),athlon-xp)
50
ifeq ($(MACHINE),indy)
-
 
51
	# GCC 4.0.1 compiled for mipsEL has problems compiling in 
-
 
52
	# BigEndian mode with the swl/swr/lwl/lwr instructions.
48
	CFLAGS += -march=athlon-xp -mmmx -msse -m3dnow
53
	# We have to compile it with mips-sgi-irix5 to get it right.
-
 
54
	
49
	DEFS += -DFENCES=486
55
	BFD_NAME = elf32-bigmips
50
	CONFIG_SMP = n
56
	BFD = ecoff-bigmips
51
	CONFIG_HT = n
57
	TARGET = mips-sgi-irix5
-
 
58
	TOOLCHAIN_DIR = /usr/local/mips/bin
-
 
59
	KERNEL_LOAD_ADDRESS = 0x88002000
-
 
60
	CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -march=r4600
52
endif
61
endif
53
ifeq ($(CPU),athlon-mp)
62
ifeq ($(MACHINE}),lgxemul)
54
	CFLAGS += -march=athlon-mp -mmmx -msse -m3dnow
63
	BFD_NAME=elf32-tradlittlemips
-
 
64
	BFD = ecoff-littlemips
55
	DEFS += -DFENCES=486
65
	CFLAGS += -DHAVE_FPU -mips3
56
endif
66
endif
57
ifeq ($(CPU),pentium3)
67
ifeq ($(MACHINE),bgxemul)
-
 
68
	BFD_NAME=elf32-bigmips
-
 
69
	BFD = ecoff-bigmips
-
 
70
	TARGET = mips-sgi-irix5
-
 
71
	TOOLCHAIN_DIR = /usr/local/mips/bin
58
	CFLAGS += -march=pentium3 -mmmx -msse -msse2
72
	CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -mips3
-
 
73
endif
-
 
74
ifeq ($(MACHINE),msim4kc)
-
 
75
	# MSIM needs lwl/swl patch & 4kc instruction patch to work
-
 
76
	# otherwise add -mmemcpy -mips3
-
 
77
	
-
 
78
	BFD_NAME = elf32-tradlittlemips
59
	DEFS += -DFENCES=486
79
	BFD = binary
-
 
80
	CFLAGS += -mhard-float -march=4kc 
60
endif
81
endif
61
ifeq ($(CPU),pentium4)
82
ifeq ($(MACHINE),simics)
-
 
83
	# SIMICS 4kc emulation is broken, although for instructions
-
 
84
	# that do not bother us
-
 
85
	
-
 
86
	BFD_NAME = elf32-tradlittlemips
-
 
87
	BFD = elf32-tradlittlemips
62
	CFLAGS += -march=pentium4 -mfpmath=sse -mmmx -msse -msse2 -msse3
88
	CFLAGS += -mhard-float -mips3
-
 
89
endif
-
 
90
ifeq ($(MACHINE),msim)
-
 
91
	BFD_NAME = elf32-tradlittlemips
63
	DEFS += -DFENCES=p4
92
	BFD = binary
-
 
93
	CFLAGS += -mhard-float -mips3
64
endif
94
endif
65
 
95
 
66
## Own configuration directives
96
## Own configuration directives
67
#
97
#
68
 
98
 
69
CONFIG_ACPI = y
99
CONFIG_OFW = y
70
 
100
 
71
## Accepted configuration directives
101
## Accepted configuration directives
72
#
102
#
73
 
103
 
74
ifeq ($(CONFIG_SMP),y)
-
 
75
	DEFS += -DSMP
-
 
76
endif
-
 
77
ifeq ($(CONFIG_HT),y)
-
 
78
	DEFS += -DHT
-
 
79
endif
-
 
80
ifeq ($(CONFIG_FPU_LAZY),y)
104
ifeq ($(CONFIG_FPU_LAZY),y)
81
	DEFS += -DFPU_LAZY
105
	DEFS += -DFPU_LAZY
82
endif
106
endif
83
 
107
 
84
ARCH_SOURCES = \
108
ARCH_SOURCES = \
-
 
109
	arch/$(ARCH)/src/start.S \
85
	arch/$(ARCH)/src/context.s \
110
	arch/$(ARCH)/src/context.S \
86
	arch/$(ARCH)/src/debug/panic.s \
111
	arch/$(ARCH)/src/panic.S \
-
 
112
	arch/$(ARCH)/src/mips32.c \
87
	arch/$(ARCH)/src/delay.s \
113
	arch/$(ARCH)/src/dummy.S \
-
 
114
	arch/$(ARCH)/src/console.c \
88
	arch/$(ARCH)/src/asm.S \
115
	arch/$(ARCH)/src/asm.S \
89
	arch/$(ARCH)/src/proc/scheduler.c \
-
 
90
	arch/$(ARCH)/src/bios/bios.c \
116
	arch/$(ARCH)/src/exception.c \
91
	arch/$(ARCH)/src/smp/ap.S \
-
 
92
	arch/$(ARCH)/src/smp/apic.c \
-
 
93
	arch/$(ARCH)/src/smp/mps.c \
-
 
94
	arch/$(ARCH)/src/smp/smp.c \
-
 
95
	arch/$(ARCH)/src/atomic.S \
-
 
96
	arch/$(ARCH)/src/smp/ipi.c \
-
 
97
	arch/$(ARCH)/src/ia32.c \
-
 
98
	arch/$(ARCH)/src/interrupt.c \
117
	arch/$(ARCH)/src/interrupt.c \
99
	arch/$(ARCH)/src/pm.c \
118
	arch/$(ARCH)/src/cache.c \
100
	arch/$(ARCH)/src/userspace.c \
-
 
101
	arch/$(ARCH)/src/cpu/cpu.c \
119
	arch/$(ARCH)/src/cpu/cpu.c \
-
 
120
	arch/$(ARCH)/src/mm/asid.c \
102
	arch/$(ARCH)/src/mm/frame.c \
121
	arch/$(ARCH)/src/mm/frame.c \
103
	arch/$(ARCH)/src/mm/memory_init.c \
-
 
104
	arch/$(ARCH)/src/mm/page.c \
122
	arch/$(ARCH)/src/mm/page.c \
105
	arch/$(ARCH)/src/mm/tlb.c \
123
	arch/$(ARCH)/src/mm/tlb.c \
106
	arch/$(ARCH)/src/drivers/i8042.c \
-
 
107
	arch/$(ARCH)/src/drivers/i8254.c \
-
 
108
	arch/$(ARCH)/src/drivers/i8259.c \
-
 
109
	arch/$(ARCH)/src/drivers/ega.c \
-
 
110
	arch/$(ARCH)/src/boot/boot.S \
124
	arch/$(ARCH)/src/mm/vm.c \
111
	arch/$(ARCH)/src/boot/memmap.S \
-
 
112
	arch/$(ARCH)/src/fpu_context.c\
125
	arch/$(ARCH)/src/fpu_context.c \
113
	arch/$(ARCH)/src/fmath.c
126
	arch/$(ARCH)/src/fmath.c \
114
 
-
 
115
 
-
 
116
 
-
 
117
 
-
 
118
 
-
 
119
 
-
 
120
 
-
 
121
 
-
 
122
 
-
 
123
 
-
 
124
 
-
 
125
 
-
 
126
 
-
 
127
 
-
 
128
 
-
 
129
 
-
 
130
DEFS= -DMACHINE=${MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS}
-
 
131
CFLAGS=-mno-abicalls -G 0 -nostdlib -fno-builtin -O2  -fno-zero-initialized-in-bss
-
 
132
LFLAGS=
-
 
133
 
-
 
134
# GCC 4.0.1 compiled for mipsEL has problems compiling in 
-
 
135
# BigEndian mode with the swl/swr/lwl/lwr instructions.
-
 
136
# We have to compile it with mips-sgi-irix5 to get it right.
-
 
137
ifeq (${MACHINE},indy)
-
 
138
 MIPS_TARGET=mips-sgi-irix5
-
 
139
 MIPS_CC_DIR=/usr/local/mips/bin
-
 
140
 MIPS_BINUTILS_DIR=/usr/local/mips/bin
-
 
141
 
-
 
142
 CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -march=r4600
-
 
143
 BFD = ecoff-bigmips
-
 
144
 KERNEL_LOAD_ADDRESS = 0x88002000
-
 
145
 BFD_NAME=elf32-bigmips
-
 
146
endif
-
 
147
 
-
 
148
ifeq (${MACHINE},lgxemul)
-
 
149
 CFLAGS += -DHAVE_FPU -DFPU_LAZY -mips3
-
 
150
 BFD = ecoff-littlemips
-
 
151
 KERNEL_LOAD_ADDRESS = 0x80100000
-
 
152
 BFD_NAME=elf32-tradlittlemips
-
 
153
endif
-
 
154
 
-
 
155
ifeq (${MACHINE},bgxemul)
-
 
156
 MIPS_TARGET=mips-sgi-irix5
-
 
157
 MIPS_CC_DIR=/usr/local/mips/bin
-
 
158
 MIPS_BINUTILS_DIR=/usr/local/mips/bin
-
 
159
 
-
 
160
 CFLAGS += -EB -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -mips3
-
 
161
 BFD = ecoff-bigmips
-
 
162
 KERNEL_LOAD_ADDRESS = 0x80100000
-
 
163
 BFD_NAME=elf32-bigmips
-
 
164
endif
-
 
165
 
-
 
166
# MSIM needs lwl/swl patch & 4kc instruction patch to work
-
 
167
# otherwise add -mmemcpy -mips3
-
 
168
ifeq (${MACHINE},msim4kc)
-
 
169
 BFD = binary
-
 
170
 CFLAGS += -mhard-float -march=4kc 
-
 
171
 KERNEL_LOAD_ADDRESS = 0x80100000
-
 
172
 BFD_NAME=elf32-tradlittlemips
-
 
173
endif
-
 
174
 
-
 
175
ifeq (${MACHINE},msim)
-
 
176
 BFD = binary
-
 
177
 CFLAGS += -mhard-float -mips3
-
 
178
 KERNEL_LOAD_ADDRESS = 0x80100000
-
 
179
 BFD_NAME=elf32-tradlittlemips
-
 
180
endif
-
 
181
 
-
 
182
# SIMICS 4kc emulation is broken, although for instructions
-
 
183
# that do not bother us
-
 
184
ifeq (${MACHINE},simics)
-
 
185
 BFD = elf32-tradlittlemips
-
 
186
 CFLAGS += -mhard-float -mips3
-
 
187
 KERNEL_LOAD_ADDRESS = 0x80100000
-
 
188
 BFD_NAME=elf32-tradlittlemips
-
 
189
endif
-
 
190
 
-
 
191
arch/$(ARCH)/_link.ld: arch/$(ARCH)/_link.ld.in
-
 
192
	$(CC) $(CFLAGS) -C -DBFD=${BFD} -E -x c $< | grep -v "^\#" > $@
-
 
193
 
-
 
194
arch_sources= \
-
 
195
	generic/src/arch/start.S \
-
 
196
	generic/src/arch/context.S \
-
 
197
	generic/src/arch/panic.S \
-
 
198
	generic/src/arch/mips32.c \
-
 
199
	generic/src/arch/dummy.S \
-
 
200
	generic/src/arch/console.c \
-
 
201
	generic/src/arch/asm.S \
-
 
202
	generic/src/arch/exception.c \
-
 
203
	generic/src/arch/interrupt.c \
-
 
204
	generic/src/arch/cache.c \
-
 
205
	generic/src/arch/cpu/cpu.c \
-
 
206
	generic/src/arch/mm/asid.c \
-
 
207
	generic/src/arch/mm/frame.c \
-
 
208
	generic/src/arch/mm/page.c \
-
 
209
	generic/src/arch/mm/tlb.c \
-
 
210
	generic/src/arch/mm/vm.c \
-
 
211
	generic/src/arch/fpu_context.c \
-
 
212
	generic/src/arch/fmath.c \
-
 
213
	generic/src/arch/drivers/arc.c
127
	arch/$(ARCH)/src/drivers/arc.c