source: soft/giet_vm/Makefile @ 298

Last change on this file since 298 was 297, checked in by alain, 10 years ago

Bug fix in both _tty_rx_isr() and _bdv_isr():
The ISR must do nothing it the status indicates that
there is no pending ISR.

File size: 15.9 KB
RevLine 
[162]1export # export all variable to sub-Makefile
[232]2CC = mipsel-unknown-elf-gcc
3AS = mipsel-unknown-elf-as
4LD = mipsel-unknown-elf-ld
5DU = mipsel-unknown-elf-objdump
[158]6
[258]7### FAT parameters definition for Disk image
8### sector_size          = 512
9### partition_begin_lba  = 300
10### sector_per_cluster   = 8
11### partition sectors    = 524832
[204]12
[297]13MAP_XML      = mappings/4c_1p_four_leti_ext.xml
[162]14
[258]15### Objects to be linked for kernel.elf
[289]16KERNEL_OBJS  = build/common/utils.o       \
17               build/common/vmem.o        \
[258]18               build/fat32/fat32.o        \
19               build/drivers/dma_driver.o \
[295]20               build/drivers/cma_driver.o \
[258]21               build/drivers/fbf_driver.o \
22               build/drivers/xcu_driver.o \
23               build/drivers/icu_driver.o \
24               build/drivers/ioc_driver.o \
[289]25               build/drivers/bdv_driver.o \
26               build/drivers/hba_driver.o \
27               build/drivers/sdc_driver.o \
28               build/drivers/spi_driver.o \
[295]29               build/drivers/rdk_driver.o \
[258]30               build/drivers/iob_driver.o \
31               build/drivers/mmc_driver.o \
32               build/drivers/mwr_driver.o \
33               build/drivers/nic_driver.o \
34               build/drivers/tim_driver.o \
35               build/drivers/tty_driver.o \
[295]36               build/drivers/pic_driver.o \
[258]37               build/kernel/giet.o        \
38               build/kernel/switch.o      \
39               build/kernel/ctx_handler.o \
40               build/kernel/exc_handler.o \
41               build/kernel/sys_handler.o \
42               build/kernel/irq_handler.o \
43               build/kernel/kernel_init.o
[162]44
[258]45### Objects to be linked for boot.elf
[289]46BOOT_OBJS    = build/common/utils.o       \
47               build/common/vmem.o        \
[258]48               build/fat32/fat32.o        \
[295]49               build/drivers/dma_driver.o \
[258]50               build/drivers/tty_driver.o \
[295]51               build/drivers/pic_driver.o \
[258]52               build/drivers/xcu_driver.o \
53               build/drivers/ioc_driver.o \
[289]54               build/drivers/bdv_driver.o \
55               build/drivers/sdc_driver.o \
56               build/drivers/spi_driver.o \
[295]57               build/drivers/rdk_driver.o \
[258]58               build/drivers/mmc_driver.o \
[295]59               build/drivers/mwr_driver.o \
[258]60               build/kernel/ctx_handler.o \
61               build/kernel/switch.o      \
62               build/boot/boot.o
63
64### Objects to be linked for display.elf
[189]65DISPLAY_OBJS = build/display/main.o \
[258]66               build/libs/stdio.o
[162]67
[258]68### Objects to be linked for router.elf
69ROUTER_OBJS  = build/router/main.o        \
70               build/libs/mwmr_channel.o  \
71               build/libs/stdio.o
[162]72
[258]73### Objects to be linked for hello.elf
74HELLO_OBJS   = build/hello/main.o   \
75               build/libs/stdio.o         
[158]76
[258]77### Objects to be linked for pgcd.elf
78PGCD_OBJS    = build/pgcd/main.o          \
79               build/libs/stdio.o
[158]80
[258]81### Objects to be linked for game.elf
82GAMEOFLIFE_OBJS = build/gameoflife/main.o \
83                  build/libs/stdio.o      \
84                  build/libs/barrier.o
[251]85
[258]86### Objects to be linked for dhrystone.elf
[241]87DHRYSTONE_OBJS = build/dhrystone/dhry_1.o \
88                 build/dhrystone/dhry_2.o \
[272]89                 build/libs/stdlib.o      \
[258]90                 build/libs/stdio.o       \
91                 build/libs/string.o      \
92                 build/libs/spin_lock.o   \
[241]93                 build/libs/malloc.o
94
[258]95### Objects to be linked for sort.elf
96SORT_OBJS   = build/sort/main.o        \
97              build/libs/stdio.o       \
98              build/libs/spin_lock.o   \
99              build/libs/barrier.o
[241]100
[295]101### Objects to be linked for transpose.elf
102TRANSPOSE_OBJS = build/transpose/main.o  \
103                 build/libs/stdio.o      \
104                 build/libs/malloc.o     \
105                 build/libs/spin_lock.o  \
106                 build/libs/barrier.o
[258]107
[272]108CFLAGS = -Wall -ffreestanding -mno-gpopt -mips32
[158]109
[289]110
[258]111GIET_INCLUDE = -Igiet_boot    \
112               -Igiet_kernel  \
113               -Igiet_xml     \
114               -Igiet_fat32   \
115               -Igiet_drivers \
116               -Igiet_common  \
117               -Igiet_libs    \
118               -I.
[158]119
[258]120USER_INCLUDE = -Igiet_libs    \
121               -Igiet_xml     \
122               -I.
[160]123
[258]124all: map.bin                         \
125     build/boot/boot.elf             \
126     build/kernel/kernel.elf         \
127     build/display/display.elf       \
128     build/router/router.elf         \
129     build/hello/hello.elf           \
130     build/pgcd/pgcd.elf             \
131     build/dhrystone/dhrystone.elf   \
132     build/gameoflife/gameoflife.elf \
133     build/sort/sort.elf             \
[295]134     build/transpose/transpose.elf   \
[258]135     hdd/virt_hdd.dmg
[160]136
[258]137### Disk image generation
[272]138### This requires the generic LINUX/MacOS script "create_dmg" script
[258]139### written by C.Fuguet. (should be installed in GIET-VM root directory).
[295]140hdd/virt_hdd.dmg: map.bin                \
141         build/boot/boot.elf             \
142         build/kernel/kernel.elf         \
143         build/display/display.elf       \
144         build/hello/hello.elf           \
145         build/pgcd/pgcd.elf             \
146         build/router/router.elf         \
147         build/dhrystone/dhrystone.elf   \
148         build/gameoflife/gameoflife.elf \
149         build/sort/sort.elf             \
150         build/transpose/transpose.elf
151
[258]152### remove all content of virtual disk virt_hdd
153        rm -rf hdd/virt_hdd/*
154### copy content to virtual disk from build, misc and map.bin
155### the boot.elf file is not copied on the virtual disk
156        cp -r build hdd/virt_hdd
157        rm -rf hdd/virt_hdd/build/boot
158        cp -r hdd/misc hdd/virt_hdd
159        cp map.bin  hdd/virt_hdd
160### create temporary partition image (partition_image.dmg)
161        ./create_dmg create hdd/virt_hdd partition_image
162### copy standard MBR into virtual disk image (mbr.dmg)
163        cp hdd/mbr.dmg $@ 
164### copy boot.elf into virtual disk image (sector 2)
165        dd if=build/boot/boot.elf of=$@ seek=2
166### copy partition image into virtual disk image (sector 300)
167        dd if=partition_image.dmg of=$@ seek=300 
168### remove partition image
169        rm partition_image.dmg
170
[177]171### mapping compilation
[204]172map.bin: $(MAP_XML)
[258]173        $(MAKE) -C giet_xml
174        giet_xml/xml2bin $< .
[158]175
[258]176### drivers compilation
[295]177build/drivers/cma_driver.o: giet_drivers/cma_driver.c  \
178                            giet_drivers/cma_driver.h  \
179                            giet_config.h              \
180                            $(MAP_XML)
181        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
182
[258]183build/drivers/dma_driver.o: giet_drivers/dma_driver.c  \
184                            giet_drivers/dma_driver.h  \
185                            giet_config.h              \
186                            $(MAP_XML)
187        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]188
[258]189build/drivers/fbf_driver.o: giet_drivers/fbf_driver.c  \
190                            giet_drivers/fbf_driver.h  \
191                            giet_config.h              \
192                            $(MAP_XML)
193        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]194
[258]195build/drivers/xcu_driver.o: giet_drivers/xcu_driver.c  \
196                            giet_drivers/xcu_driver.h  \
197                            giet_config.h              \
198                            $(MAP_XML)
199        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]200
[258]201build/drivers/icu_driver.o: giet_drivers/icu_driver.c  \
202                            giet_drivers/icu_driver.h  \
203                            giet_config.h              \
204                            $(MAP_XML)
205        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
206
207build/drivers/ioc_driver.o: giet_drivers/ioc_driver.c  \
208                            giet_drivers/ioc_driver.h  \
209                            giet_config.h              \
210                            $(MAP_XML)
211        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
212
[289]213build/drivers/bdv_driver.o: giet_drivers/bdv_driver.c  \
214                            giet_drivers/bdv_driver.h  \
215                            giet_config.h              \
216                            $(MAP_XML)
217        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
218
219build/drivers/hba_driver.o: giet_drivers/hba_driver.c  \
220                            giet_drivers/hba_driver.h  \
221                            giet_config.h              \
222                            $(MAP_XML)
223        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
224
225build/drivers/sdc_driver.o: giet_drivers/sdc_driver.c  \
226                            giet_drivers/sdc_driver.h  \
227                            giet_config.h              \
228                            $(MAP_XML)
229        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
230
231build/drivers/spi_driver.o: giet_drivers/spi_driver.c  \
232                            giet_drivers/spi_driver.h  \
233                            giet_config.h              \
234                            $(MAP_XML)
235        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
236
[295]237build/drivers/rdk_driver.o: giet_drivers/rdk_driver.c  \
238                            giet_drivers/rdk_driver.h  \
239                            giet_config.h              \
240                            $(MAP_XML)
241        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
242
[258]243build/drivers/iob_driver.o: giet_drivers/iob_driver.c  \
244                            giet_drivers/iob_driver.h  \
245                            giet_config.h              \
246                            $(MAP_XML)
247        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
248
249build/drivers/mmc_driver.o: giet_drivers/mmc_driver.c  \
250                            giet_drivers/mmc_driver.h  \
251                            giet_config.h              \
252                            $(MAP_XML)
253        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
254
255build/drivers/mwr_driver.o: giet_drivers/mwr_driver.c  \
256                            giet_drivers/mwr_driver.h  \
257                            giet_config.h              \
258                            $(MAP_XML)
259        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
260
261build/drivers/nic_driver.o: giet_drivers/nic_driver.c  \
262                            giet_drivers/nic_driver.h  \
263                            giet_config.h              \
264                            $(MAP_XML)
265        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
266
267build/drivers/tim_driver.o: giet_drivers/tim_driver.c  \
268                            giet_drivers/tim_driver.h  \
269                            giet_config.h              \
270                            $(MAP_XML)
271        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
272
273build/drivers/tty_driver.o: giet_drivers/tty_driver.c  \
274                            giet_drivers/tty_driver.h  \
275                            giet_config.h              \
276                            $(MAP_XML)
277        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
278
[295]279build/drivers/pic_driver.o: giet_drivers/pic_driver.c  \
280                            giet_drivers/pic_driver.h  \
281                            giet_config.h              \
282                            $(MAP_XML)
283        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
284
[258]285### fat32 compilation
286build/fat32/fat32.o: giet_fat32/fat32.c \
287                     giet_fat32/fat32.h \
288                     giet_config.h      \
289                     $(MAP_XML)
290        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
291
292### utils compilation
293build/common/utils.o: giet_common/utils.c \
294                      giet_common/utils.h \
295                      giet_config.h       \
296                      $(MAP_XML)
297        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
298
299### vmem compilation
300build/common/vmem.o: giet_common/vmem.c \
301                     giet_common/vmem.h \
302                     giet_config.h    \
303                     $(MAP_XML)
304        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
305
[177]306### boot compilation
[258]307build/boot/boot.elf: $(BOOT_OBJS) 
308        $(LD) -o $@ -T giet_boot/boot.ld $(BOOT_OBJS) 
[189]309        $(DU) -D $@ > $@.txt
[158]310
[258]311build/boot/boot.o: giet_boot/boot.c          \
312                   giet_common/utils.h       \
313                   giet_fat32/fat32.h        \
[289]314                   giet_common/vmem.h        \
[258]315                   giet_drivers/tty_driver.h \
316                   giet_drivers/ioc_driver.h \
317                   giet_config.h             \
318                   $(MAP_XML)
319        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
[158]320
[258]321### kernel compilation
322build/kernel/kernel.elf: $(KERNEL_OBJS) giet_kernel/kernel.ld
323        $(LD) -o $@ -T giet_kernel/kernel.ld $(KERNEL_OBJS)
324        $(DU) -D $@ > $@.txt
[158]325
[258]326build/kernel/%.o: giet_kernel/%.c giet_config.h $(MAP_XML)
327        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
328
329build/kernel/%.o: giet_kernel/%.s giet_config.h $(MAP_XML)
330        $(CC) $(GIET_INCLUDE) $(CFLAGS)  -c -o $@ $<
331
332
333
334
335### libs compilation
336build/libs/stdio.o: giet_libs/stdio.c \
337                    giet_libs/stdio.h \
338                    giet_config.h 
339        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
340
341build/libs/mwmr_channel.o: giet_libs/mwmr_channel.c \
342                           giet_libs/mwmr_channel.h \
343                           giet_config.h
344        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
345
346build/libs/malloc.o: giet_libs/malloc.c         \
347                     giet_libs/malloc.h         \
348                     giet_libs/malloc_private.h \
349                     giet_config.h
350        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
351
352build/libs/barrier.o: giet_libs/barrier.c \
353                      giet_libs/barrier.h \
354                      giet_config.h
355        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
356
[259]357build/libs/stdlib.o: giet_libs/stdlib.c \
358                     giet_libs/stdlib.h \
359                     giet_config.h
360        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
361
[258]362build/libs/string.o: giet_libs/string.c \
363                     giet_libs/string.h \
364                     giet_config.h
365        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
366
367build/libs/spin_lock.o: giet_libs/spin_lock.c \
368                        giet_libs/spin_lock.h \
369                        giet_config.h
370        $(CC) $(CFLAGS) $(USER_INCLUDE) -c -o $@ $<
371
372
373
374
[189]375### display compilation
376build/display/display.elf: $(DISPLAY_OBJS) display/display.ld
377        $(LD) -o $@ -T display/display.ld $(DISPLAY_OBJS)
378        $(DU) -D $@ > $@.txt
[158]379
[258]380build/display/main.o: display/main_cma.c
381        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]382
383### router compilation
384build/router/router.elf: $(ROUTER_OBJS) router/router.ld
385        $(LD) -o $@ -T router/router.ld $(ROUTER_OBJS)
386        $(DU) -D $@ > $@.txt
387
388build/router/main.o: router/main.c
[258]389        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[189]390
391### hello compilation
392build/hello/hello.elf: $(HELLO_OBJS) hello/hello.ld
393        $(LD) -o $@ -T hello/hello.ld $(HELLO_OBJS)
394        $(DU) -D $@ > $@.txt
395
396build/hello/main.o: hello/main.c
[258]397        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]398
399### pgcd compilation
400build/pgcd/pgcd.elf: $(PGCD_OBJS) pgcd/pgcd.ld
401        $(LD) -o $@ -T pgcd/pgcd.ld $(PGCD_OBJS)
402        $(DU) -D $@ > $@.txt
403
404build/pgcd/main.o: pgcd/main.c
[258]405        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[189]406
[251]407### gameoflife compilation
408build/gameoflife/gameoflife.elf: $(GAMEOFLIFE_OBJS) gameoflife/gameoflife.ld
409        $(LD) -o $@ -T gameoflife/gameoflife.ld $(GAMEOFLIFE_OBJS)
410        $(DU) -D $@ > $@.txt
411
412build/gameoflife/main.o: gameoflife/main.c
[258]413        $(CC) $(USER_INCLUDE) $(CFLAGS) -O3 -c -o $@ $<
[251]414
[241]415### dhrystone compilation
416build/dhrystone/dhrystone.elf: $(DHRYSTONE_OBJS) dhrystone/dhrystone.ld
417        $(LD) -o $@ -T dhrystone/dhrystone.ld $(DHRYSTONE_OBJS)
418        $(DU) -D $@ > $@.txt
419
420build/dhrystone/dhry_1.o: dhrystone/dhry_1.c
[258]421        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]422
423build/dhrystone/dhry_2.o: dhrystone/dhry_2.c
[258]424        $(CC) $(USER_INCLUDE) $(CFLAGS)  -c -o $@ $<
[241]425
[256]426### sort compilation
[258]427build/sort/sort.elf: $(SORT_OBJS) sort/sort.ld
[256]428        $(LD) -o $@ -T sort/sort.ld $(SORT_OBJS)
429        $(DU) -D $@ > $@.txt
430
431build/sort/main.o: sort/main.c
[258]432        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
[256]433
[295]434### transpose compilation
435build/transpose/transpose.elf: $(TRANSPOSE_OBJS) transpose/transpose.ld
436        $(LD) -o $@ -T transpose/transpose.ld $(TRANSPOSE_OBJS)
437        $(DU) -D $@ > $@.txt
438
439build/transpose/main.o: transpose/main.c
440        $(CC) $(USER_INCLUDE) $(CFLAGS) -c -o $@ $<
441
[177]442### clean
[158]443clean:
[252]444        rm -f *.o *.elf *.bin *.txt core  giet_vsegs.ld hard_config.h map.bin*~
[258]445        $(MAKE) -s clean -C giet_xml
[232]446        rm -rf build/boot/*
[258]447        rm -rf build/fat32/*
448        rm -rf build/common/*
449        rm -rf build/drivers/*
450        rm -rf build/kernel/*
451        rm -rf build/reset/*
[232]452        rm -rf build/libs/*
453        rm -rf build/pgcd/*
454        rm -rf build/hello/*
455        rm -rf build/display/*
456        rm -rf build/router/*
[251]457        rm -rf build/gameoflife/*
[241]458        rm -rf build/dhrystone/*
[258]459        rm -rf build/sort/*
[295]460        rm -rf build/transpose/*
[258]461        rm -rf build/map.bin
[272]462        rm -rf hdd/virt_hdd/*
[258]463        rm -rf hdd/virt_hdd.dmg
Note: See TracBrowser for help on using the repository browser.