From 37b091e5da0ec639dae452fed0939d1166eaae5f Mon Sep 17 00:00:00 2001 From: David Harris Date: Sat, 25 Dec 2021 06:35:36 -0800 Subject: [PATCH] Checked in Chapter 2 C and assembly examples --- Makefile | 6 -- examples/C/simple/Makefile | 14 ++++ examples/C/simple/simple.c | 14 ++++ examples/asm/example/Makefile | 9 ++- examples/asm/example/example | Bin 6072 -> 0 bytes examples/asm/example/example.S | 64 +----------------- examples/asm/sumtest/Makefile | Bin 0 -> 570 bytes examples/asm/sumtest/sum.S | Bin 0 -> 794 bytes examples/asm/sumtest/sumtest.S | 38 +++++++++++ examples/asm/sumtest/sumtest.reference_output | 1 + examples/asm/test | Bin 6296 -> 0 bytes examples/asm/test.S | 22 ------ examples/link/link.ld | 17 +++++ examples/link/linkc.ld | 17 +++++ wally-pipelined/regression/Makefile | 16 ++++- 15 files changed, 124 insertions(+), 94 deletions(-) create mode 100644 examples/C/simple/Makefile create mode 100644 examples/C/simple/simple.c delete mode 100755 examples/asm/example/example create mode 100644 examples/asm/sumtest/Makefile create mode 100644 examples/asm/sumtest/sum.S create mode 100644 examples/asm/sumtest/sumtest.S create mode 100644 examples/asm/sumtest/sumtest.reference_output delete mode 100755 examples/asm/test delete mode 100644 examples/asm/test.S create mode 100644 examples/link/link.ld create mode 100644 examples/link/linkc.ld diff --git a/Makefile b/Makefile index 13d18c37a..b83437833 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,5 @@ all: make install - make compile make regression # install copies over the Makefile.include from riscv-isa-sim @@ -11,11 +10,6 @@ install: sed -i '/export TARGETDIR ?=/c\export TARGETDIR ?= ${RISCV}/riscv-isa-sim/arch_test_target' addins/riscv-arch-test/Makefile.include echo export RISCV_PREFIX = riscv64-unknown-elf- >> addins/riscv-arch-test/Makefile.include -compile: - make -C addins/riscv-arch-test - make -C addins/riscv-arch-test XLEN=32 - cd addins/riscv-arch-test; exe2memfile.pl work/*/*/*.elf - regression: make -C wally-pipelined/regression diff --git a/examples/C/simple/Makefile b/examples/C/simple/Makefile new file mode 100644 index 000000000..66fe7d7bc --- /dev/null +++ b/examples/C/simple/Makefile @@ -0,0 +1,14 @@ +TARGET = simple + +$(TARGET).objdump: $(TARGET) + riscv64-unknown-elf-objdump -S -D $(TARGET) > $(TARGET).objdump + +$(TARGET): $(TARGET).c + riscv64-unknown-elf-gcc -g -o $(TARGET) -march=rv64gc -mabi=lp64d -mcmodel=medany \ + -O $(TARGET).c +# -O -T../../link/linkc.ld $(TARGET).c +# -nostartfiles -nostdlib $(TARGET).c +# -nostartfiles -nostdlib -T../../link/link.ld $(TARGET).c + +clean: + rm -f $(TARGET) $(TARGET).objdump diff --git a/examples/C/simple/simple.c b/examples/C/simple/simple.c new file mode 100644 index 000000000..d610f2999 --- /dev/null +++ b/examples/C/simple/simple.c @@ -0,0 +1,14 @@ +// simple.C +// David_Harris@hmc.edu 24 December 2021 +// Simple illustration of compiling C code + +long sum(long N) { + long result, i; + result = 0; + for (i=1; i<=N; i++) result = result + i; + return result; +} + +int main(void) { + return sum(4); +} \ No newline at end of file diff --git a/examples/asm/example/Makefile b/examples/asm/example/Makefile index 081f342c7..0cb8448fd 100644 --- a/examples/asm/example/Makefile +++ b/examples/asm/example/Makefile @@ -1,2 +1,9 @@ +example.objdump: example + riscv64-unknown-elf-objdump -D example > example.objdump + example: example.S - riscv64-unknown-elf-gcc -o example example.S + riscv64-unknown-elf-gcc -o example -march=rv32i -mabi=ilp32 -mcmodel=medany \ + -nostartfiles -nostdlib -T../../link/link.ld example.S + +clean: + rm -f example example.objdump diff --git a/examples/asm/example/example b/examples/asm/example/example deleted file mode 100755 index a9b74047949c0c1022323eb3f86a6a5e588b2095..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6072 zcmeHLZ%iD=6@UBZ4qxpiU`TOlHwMlHm(mL)wBRN|$Dadir6h{$RF0Y~%ie;|x#P}z zi({f%xj&ot`aHd53G8*2Q)61IXJCynjC z*`0x7xl=#%LludUX5P$ie(%kjH?y;|`-kJmbmJ+jN%1Y7fVG{DqHtDrvuA==_MJAugU*ws*_o!rgNo)_DZ&V9yp4z^5 zVv$rSKr$NrpfJJRDm)bZ!f`n2nFn`%F*;RfvsFHL&a8d6d>*E^&I7FBJypQ9&O?dq z=%jF-yY;|aV?o(;!+?F3*pB|$gSO8#rEvH;%!#(~PG{uCE#BM6#Uil?;T%OyG7-H+ zc*O!h5AtG>LfaV6jWrfTJ!RAO*~)==h^!ahk1jkOI64(el_kjdTtV5@9n&7K$Cu0# zn+qL|=0_c0xb4@jz!+JPq~NfDIQ>C zq$hG5oOx-Ou&2R^dBTPg^Mr^J^MrsB^8}9)^8|+y^8}#8jIp_S^Zw*W0xrIu9I%!Hq_ob-f8z<)|>jr`}vnI?`?W<{6*d`V?5#&Lon*SQ>P3Jiq7{$kUxo6IBNbd zG7Li15ZpWxtr(i;Qv$N$b;FyLqCswEu;SkzebO-GOUEm=*Tml+$S15f=blUOsY|Dw z=u6*e7uIj2$*P{~@py6VT9Si;7cLby9NW}+r${b}rT+Dmxk6-p zP9&nOTr1~sj0x%JLcDHp^KYj{+YYuXO;_!p7KwVeR`j4P+Lm1NS6di&u+nS;vVY5_EAd%)OpLg32Lqht#&8$kjA50e zlk{Aurf0@o+BSOuA`hC+arL)NIZY+&|GGTqRb;e4Doa zN4363Le)}$6f!BgN#P}hf(5ghT?+UvXYcn+hJd$yb}wI!3s7zGm-GuDf;%g212&)K zcI@!RM)qc1>JcChCbQyemPi>j0UQ}Evr4RraO0k}qW}RuW4`pW1UBd36MZgA97yDe z9qT>FZSa@;XR~|Kz*okH+`xz(cCW&wkzT=)!#JFzabQdMs(}koZ;A8Uh-aH`+OWn! zN5;1vfj-N@Kbr&p5OEHc*0CMGhe-N6=4|8sGY5Vp2R@qv$1k_6_P@-5=UPV|7b4p_ zqM5Ar^NocQSM1wTid*-2t$_YX*5_q+4&0vuk0G9q`?-CSK_G4$=@>TGiVMhQ@k-jOp8!+KwLH+D#pHz@V^gI%&; z^6Eh?EXjQbKnVsyepOe!uA1x&!;U0tn%pm`y}H&9-I^RwC2wCK&=0|`y{e+)TSt;I zU`MH65X4{t-?{Q&(Ua0MlDeV<-)3 zDCq0Oz;8iwhHof$wlw~ z7|Ts!5YmE57=gtVXCPutJ9jPyq$?bjOjiSHAgt;TkbS*ih7_sGT~v+u8!-lOh5G}# z+=WutOu2{EaJ%W?Qumn44z8tOfh)sZmtoEoHU)YDF5Gbe+(_Uu?kFx<*EL^PpRSTO z-T$68q6u<>uyc;xTTW8bFXMl?%!H5CvQ&yKqR(jTe#8Dp(%+JcI@b30vFE-FeRi%_ zQzE-hFazxTV6qN7?$6L??-4iEXS`hc&DfFYKf718Q+@Vcw(7I?c8fkc@86(5Gd3_H zl~#YAMx0U8njV(4X3*xfL^;KZ^^wX|lOvbumqnizTL?TZ~)BC$wz(BK^;9otRbs EKb_svjsO4v diff --git a/examples/asm/example/example.S b/examples/asm/example/example.S index f487950a5..1205fad4a 100644 --- a/examples/asm/example/example.S +++ b/examples/asm/example/example.S @@ -1,67 +1,7 @@ -// example.s -// David_Harris@hmc.edu 5 December 2021 - .section .text.init -//.globl rvtest_entry_point -//rvtest_entry_point: - -.globl main -main: +.globl rvtest_entry_point +rvtest_entry_point: li a0, 42 self_loop: j self_loop - -.end - -/* -#include "model_test.h" -#include "arch_test.h" -RVTEST_ISA("RV32I") - -.section .text.init -.globl rvtest_entry_point -rvtest_entry_point: -RVMODEL_BOOT -RVTEST_CODE_BEGIN - -#ifdef TEST_CASE_1 - -RVTEST_CASE(0,"//check ISA:=regex(.*32.*);check ISA:=regex(.*I.*);def TEST_CASE_1=True;",add) - -RVTEST_SIGBASE( x3,signature_x3_1) - -inst_0: -// rs2 == rd != rs1, rs1==x4, rs2==x24, rd==x24, rs1_val > 0 and rs2_val > 0, rs2_val == 1, rs1_val == (2**(xlen-1)-1), rs1_val != rs2_val, rs1_val == 2147483647 -// opcode: add ; op1:x4; op2:x24; dest:x24; op1val:0x7fffffff; op2val:0x1 -TEST_RR_OP(add, x24, x4, x24, 0x80000000, 0x7fffffff, 0x1, x3, 0, x18) - - -80000000 : - -.section .text.init -.globl rvtest_entry_point -rvtest_entry_point: -RVMODEL_BOOT -RVTEST_CODE_BEGIN -80000000: feedc0b7 lui ra,0xfeedc -8 - -80003220 : -#endif - - -RVTEST_CODE_END -RVMODEL_HALT -80003220: 00408093 addi ra,ra,4 -80003224: 00100093 li ra,1 - -80003228 : -80003228: 00001f17 auipc t5,0x1 -8000322c: dc1f2c23 sw ra,-552(t5) # 80004000 - -80003230 : -80003230: 0000006f j 80003230 -80003234: 0000 unimp - ... -*/ \ No newline at end of file diff --git a/examples/asm/sumtest/Makefile b/examples/asm/sumtest/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..40f51a7ae6530a35a9380b695e1c04427ea1b2e0 GIT binary patch literal 570 zcmZvZO-lnY5Qe>Oe#NwSP-Nnz6e+AADBj&Y3X*1LcVqLh$!@Isv`D(eV;$gQu7vv> zpFj-8mHB5}UhVyP^*_Ip60iew83|~FmwoBSUb-=B#9EblST4p;8rP664K>1U;guD8 zTeL1j;bW^bg`Zoa)f%wo{C3=0+0EhLy2&`c2g0juSz;KJvsLf^slj7HSKw!6nR| z*C?wdljkC8D{=vUM-*|1LXrJ7w);c^W|DK|osoO{%2G({Mp%k$+fG2=Qv=AhtGl3E@)2x2W`mzhF&nDa6mQi z_*@5H*H{EwO3aoniv_)fNyyRbq}7DEgtnLD>3k+nn04MqR5HCd*84Bl$`+%sQvO*a zl-L9i4|DHYV%)stSon+VlVR5^K+Xnq%3{2<<)KS@>CvwYgze@q}rrymuBt>kaRO=eGM#jYks2G3>33%PpSSIpOlSym51{(~{lq z+?M?>hw0|#Da+o+9MYO>un4`*aD72*OxPqu5|ah5-%n!K5q4(gjaH{;#KU`y?nvl~ zy7E5h&^RA|VID3{esDd0*tGD(z!N9Z(I z&0{cX8UrilQ6oysqXJ6IqXv|iM|qT(M>&+3M*$^fjLqEK1M$HaTze%xXymjff9;jM zWAVXK(EB(RnGS9KVlZ@Z!^5xE3{D;zzx$K1{fAoqVR$b*xAX3?DZ^s}g(DN2zihs} z=jOhdA5FDQNLkr@`O80lIkxlO-e^fbZ0x#MT}LjA)hHcy#u#-FKlgs-^sYF;a7y_e_CizGh%QlB9*KWAg% z2Cji~We*$1!gJB8zQSLQ4>cZblAJRp<0VUe71Rt_tFPol&zSAThQ}ZL4Bnc#0@gDd z?AGeP6!kYqaE*_fO5vo*SUPn1*NGF8oQteZbCGrX{3H9%M^87}IoF>~TF-u5v78qP z9eoy=S${MJaotLFM&O3Y9w_fMO+7Az9Jp=)E^@=TcJD+&O|s7yKpsiw=y|Y}o)!0L zy=BMlx^M3RD962!oQ^-F@8{}o>T-t4WX@N)td9y{-L|W5R<8GdcJpsWSo2jL(5mmN z5m=4DY6Mmz@P843AJF?SbB5I$>*~H&RMy!1?3N{>l5YNGVc_8>hs$TvSpZ)p6L z`}!A%=kjJ4PFX*{B{(ecvvf1?2WtNy{Vq93@#_?K7_fke9Fin`PVpCc9sf{=VGDi- z6F)CtCaH$v0>xjXb`DcKAMqUAcd6^VgyN~^QU$g1XX@u!YNtx$bI?F>3d45FS82cO z$CX?9lb(-sXkuQ(?Q(M~%5_tAcLQGXtx4(+A*ZR$@kb5s;1x6dcK zRr!clwMn4J9p0cSD`LC1(+iTK2G#ENc5DzuPeAPO1=`#`(W3^Gpy=*C0#d-=<&#y} zW3#7cXm&)mqPTlRxl>hopj~nMWzo~^_xC`c?Vv2F_!bn!Bv{0*)nz)8^t9CS6o6+1Yg4(dtqQSkb^x)m8+)C;1=t-67jK!}V&bAEAv!JeQ<$0{pIXFzLhXsLb5 zCAymHMUl9IN{iilmIFc6t*8hsbCGbm6nO=f1TekjG=|c+b_Kkh82b`5r}>6*cYWyL=?p~7 zxqJ6wK-z*qQFqlZ`-8Fyez&(1^pGNTxr?$Ee=WuUwqTE6b+@5Z6H<9i8!kRSt|>G^u1_|%sw&>LZdE2P+y60bM169Su=9@H zr_NEkzLftZxV@I8O;{uP3}^SQ0{Xv{*=0(Eo1C^_g{o}Z)o)&E6*KeiM9*?o-Bnf`hPP|4