1 FPGAMMIX_DIR
=/home
/tommy
/fpgammix
2 MMIX_TOOLS_BIN
=/opt
/mmix
/bin
4 # XXX -mno-base-addresses should be the default! -mbase-addresses is
5 # completely unscalable, running out of globals within 30 uses.
7 #CFLAGS=-mno-base-addresses -O2 -fomit-frame-pointer
8 MMIXCC
=$(MMIX_TOOLS_BIN
)/mmix-gcc
9 CFLAGS
=-O
-fomit-frame-pointer
-std
=gnu99
11 #LDOPTS=-Ttext=80000000
15 # - via the mmix userlevel simuator: %.mmixsim
16 # - via the mmmix pipeline simuator: %.mmmixsim
17 # - via the RTL implementation: %.rtlsim
18 # - uploaded to tinymon on FPGA: %.txt + manual upload (for now)
20 # In future possible pushed via z-modem or even UDP broadcasts
26 (echo v1
;echo @
8000000000005000;echo
999999) | mmmix ..
/common
/plain.mmconfig
$<
28 %.rtlsim
: %.txt
$(FPGAMMIX_DIR
)/rtl
/Icarus
/initmem.data
29 cp
$< $(FPGAMMIX_DIR
)/rtl
/Icarus
/input.txt
30 $(MAKE
) -C
$(FPGAMMIX_DIR
)/rtl
/Icarus
;
35 mmixal
-l
$@.lst
-o
$@
$<
38 $(MMIX_TOOLS_BIN
)/mmix-objcopy
-I elf64-mmix
-O mmo
$< $@
44 $(MMIX_TOOLS_BIN
)/mmix-strip
$< -o
$<.stripped
45 $(MMIX_TOOLS_BIN
)/mmix-objdump
-s
$<.stripped|cut
-d
' ' -f-6
> $@
46 $(MMIX_TOOLS_BIN
)/mmix-nm
$< |grep
'T Main'|
(read x y
;echo
" $$x"G
) >> $@
48 # The default .elf rule only applies to the most trivial of examples
49 # XXX To improve in future
51 $(MMIXCC
) $(CFLAGS
) -Ttext
=800 -melf
$< -o
$@
52 $(MMIX_TOOLS_BIN
)/mmix-objdump
-d
$@
55 $(MMIXCC
) $(CFLAGS
) -c
$< -o
$@
58 $(MMIXCC
) $(CFLAGS
) -c
$< -o
$@
61 $(MMIXCC
) $(CFLAGS
) -c
$< -o
$@
64 $(MMIX_TOOLS_BIN
)/mmix-objcopy
-I mmo
-O elf64-mmix
$< $@
67 $(MMIX_TOOLS_BIN
)/mmix-objdump
-s
$< | grep
'^ '|cut
-d
' ' -f3-6|tr
' ' '\n' | grep
-v
'^$$' > $@
70 $(MMIX_TOOLS_BIN
)/mmix-objdump
-d
$<
73 -rm *.elf
*.elf.stripped
*.o
*.txt
*.mmo
*.mmb
*.data
*.dis