From 6d135ee4418918ff40fb1c6fd93d3bfdb36abdeb Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Tue, 2 Oct 2018 23:34:01 +0200 Subject: [PATCH] Makefile: Don't delete kernel8 --- 01_bareminimum/Makefile | 2 +- 02_multicore_rust/Makefile | 2 +- 03_uart1/Makefile | 2 +- 04_mailboxes/Makefile | 2 +- 05_uart0/Makefile | 2 +- 05_uart0/kernel8 | Bin 69424 -> 69424 bytes 06_raspbootin64/Makefile | 2 +- 07_abstraction/Makefile | 2 +- 07_abstraction/kernel8 | Bin 69432 -> 69432 bytes 08_random/Makefile | 2 +- 08_random/kernel8 | Bin 70256 -> 70256 bytes 09_delays/Makefile | 2 +- 09_delays/kernel8 | Bin 69088 -> 69088 bytes 0A_power/Makefile | 2 +- 0A_power/kernel8 | Bin 69264 -> 69264 bytes 0A_power/src/delays.rs | 105 +------------------------------ 0B_exception_levels/Makefile | 2 +- 0B_exception_levels/kernel8 | Bin 70488 -> 70488 bytes 0C_virtual_memory/Makefile | 2 +- 0C_virtual_memory/kernel8 | Bin 73056 -> 73056 bytes 0D_cache_performance/Makefile | 2 +- 0D_cache_performance/kernel8 | Bin 79496 -> 79496 bytes 0D_cache_performance/kernel8.img | Bin 6016 -> 6016 bytes 23 files changed, 14 insertions(+), 117 deletions(-) diff --git a/01_bareminimum/Makefile b/01_bareminimum/Makefile index 3d047753..d963ab87 100644 --- a/01_bareminimum/Makefile +++ b/01_bareminimum/Makefile @@ -55,4 +55,4 @@ qemu: clean: cargo clean - rm -f kernel8 + diff --git a/02_multicore_rust/Makefile b/02_multicore_rust/Makefile index 219b2e2a..9fee70c6 100644 --- a/02_multicore_rust/Makefile +++ b/02_multicore_rust/Makefile @@ -58,4 +58,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/03_uart1/Makefile b/03_uart1/Makefile index f8217023..907acb91 100644 --- a/03_uart1/Makefile +++ b/03_uart1/Makefile @@ -58,4 +58,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/04_mailboxes/Makefile b/04_mailboxes/Makefile index f8217023..907acb91 100644 --- a/04_mailboxes/Makefile +++ b/04_mailboxes/Makefile @@ -58,4 +58,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/05_uart0/Makefile b/05_uart0/Makefile index f8217023..907acb91 100644 --- a/05_uart0/Makefile +++ b/05_uart0/Makefile @@ -58,4 +58,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/05_uart0/kernel8 b/05_uart0/kernel8 index f362f0794edbbc5fe11fe8c9944e6000fd5ccd77..f1fb241ec963371688def2170560fa4b81f41b92 100755 GIT binary patch delta 38 ucmdlmk7dI=mWCyayaMJXDQ1Q#Mh3~rhDM3Wsg~0p@-Rwl*WhL3U;+U0g$n`z delta 38 ucmdlmk7dI=mWCyayaGun21dpv=0+wahKZ?Zsm9YE@-Rwl*WhL3U;+T|Tnf+t diff --git a/06_raspbootin64/Makefile b/06_raspbootin64/Makefile index f8217023..907acb91 100644 --- a/06_raspbootin64/Makefile +++ b/06_raspbootin64/Makefile @@ -58,4 +58,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/07_abstraction/Makefile b/07_abstraction/Makefile index e6e69056..cee16687 100644 --- a/07_abstraction/Makefile +++ b/07_abstraction/Makefile @@ -63,4 +63,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/07_abstraction/kernel8 b/07_abstraction/kernel8 index e3a34fb12b4b6a101baf079e130d475b7e31aa78..e2fe8a8306285c1cff15ce67d7ed7b3b29243fdd 100755 GIT binary patch delta 229 zcmdlnk7dU^mWC~iJRH-%urrEC>N9`<6T=L44loNwm`qpXU=)|M1oN2~_Mu7JO%DV~ zJArI{EI(pMNE##c}O$j&G}{Q(DK0;9)tM^47;aFbHdEb^Fc z$i?_}dLuWZD5K$YS#HLp?bEm!OBn@Hjm=C_QZ3R_O^gx^QVdO|@8e+<-)_Xq$i@T! DVDBNy delta 207 zcmdlnk7dU^mWC~iJRH+iI2c7FWf?$#iD4x>2bcvTl%@xAFp5j6gZWGh`_ZIzrZA!2$W__nf{R-NL7QW=?^#<6BrGrJ908!m(+o3OhGf(aJnHED8ghT9vs8M_$;Op;QJQI2c73^`|$oGm1-^Fn|CPgDg7-m<1y&r*8yF+kyE^44!Dx z&eI=)q&>jWj0`!9sJeZp3vw`uPj}#8oWSU@{UQhBd?rTc>4n^k;*1{CJGmL(PCvv0 zlrQ69Oq~9XhjF>Ac~(|&VnKPiZgP65o}mFla(+>&9!zlhCSFGMdKeF)#1K^pM9>tQ zpfMIfBP?Rr)ESz<6^0_*hY&=FnZXqz#LTgXS)htdU(3fR$zhb6m6}m(Q84`+3hzB1 zqZC3;ke^Xf6Q&aEUywU;3o>(3i{g_?GjmEZ^NRIg3Z@71Gkz3EH8wLzNwr8zH8Dyw ONHH|o9wNXf!vp|EewDNU delta 541 zcmeycgyq8$mWC~iE$pHU3``6>>>LcpKz8~@c1CeYC9oJ1gFBkE`t*k&X&taMBZCS9 zs&2#Sf*e3;GoUmR147z^5n@Hk^hTiW=?)x>6BrG*U*uq%&%~%Ry^xzxoY8Q4CpY8U z>AgIRi9q&y9!9b0?|2xO%bJ?!WfzoLR_G?Dm+BcBFeK*}rRu>1r*GnARIi8eAW95T zl|Tedu?ZSu5j4UghE1KJ30z?)!hHxqgqRszAwtX?iQA4@#wadn!TNZJD`ZO?|P+jqJmJ5V|ZEX~NE!hk9rK0Od59RrkRVn9eIFoD%GbWLvrN>AUw z&RD@1K3$W8aXDkq^otyf;y~U@4#v0B4Y`2Q*Eksqw#RZYMluSd8k?DD#uyQaU1KH^Z*%-womB3<53?I>?)u(?1N$WtRMcGhw z8%|eb2TGekr9;r9t)~Zqq#eN0j0`PIsJdOJHv**@i>FTn+QHZbrlxOTXRKg!n6Ame zxSY{?`b7?)jKlPo9E@+LzvW~sU^JY*kCRbsdn^}YB%^>yQi^eElDVmQVxn diff --git a/0A_power/Makefile b/0A_power/Makefile index e6e69056..cee16687 100644 --- a/0A_power/Makefile +++ b/0A_power/Makefile @@ -63,4 +63,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/0A_power/kernel8 b/0A_power/kernel8 index de098464ba2542b9c6ebfd4827dd3697aea3fe7b..e0d74e74a358447b229bcde8e0da751435f5c7b7 100755 GIT binary patch delta 221 zcmbO*mu13SmWC~if7qr!VPh1L)Mo$zCWZnw4loNwm`oRBXB3yT1oN2~R-#GUO?L!I zJAh_pk2$Y__fSoac(Rn%}2V*~wn#jSpT+$Az!v@Vj=jnl*jBlquxHE19NkuWK)wAGxH?FMDw)m K%Xt`IG6Dbt`6coI delta 221 zcmbO*mu13SmWC~if7qsrurrEC$})fe6GIal2bcvTl%_kfGm1;9gZYdMDh#O7I@1e5 z(uQEY2xIv, // 0x00 - SYSTMR_HI: ReadOnly, // 0x04 -} - -/// Public interface to the BCM System Timer -pub struct SysTmr; - -impl ops::Deref for SysTmr { - type Target = RegisterBlock; - - fn deref(&self) -> &Self::Target { - unsafe { &*Self::ptr() } - } -} - -impl SysTmr { - pub fn new() -> SysTmr { - SysTmr - } - - /// Returns a pointer to the register block - fn ptr() -> *const RegisterBlock { - DELAY_BASE as *const _ - } - - /// Get System Timer's counter - pub fn get_system_timer(&self) -> u64 { - // Since it is MMIO, we must emit two separate 32 bit reads - let mut hi = self.SYSTMR_HI.get(); - let mut lo = self.SYSTMR_LO.get(); - - // We have to repeat if high word changed during read. This - // will emit a clippy warning that needs be ignored, or you - // lose an MMIO read. - if hi != self.SYSTMR_HI.get() { - hi = self.SYSTMR_HI.get(); - lo = self.SYSTMR_LO.get(); - } - - // Compose long int value - (u64::from(hi) << 32) | u64::from(lo) - } - - /// Wait N microsec (with BCM System Timer) - pub fn wait_msec_st(&self, n: u64) { - let t = self.get_system_timer(); - - // We must check if it's non-zero, because qemu does not - // emulate system timer, and returning constant zero would - // mean infinite loop - if t > 0 { - loop { - if self.get_system_timer() < (t + n) { - break; - } - } - } - } -} - -/* - * - * Using the CPU's counter registers - * - */ -/// Wait N microsec (ARM CPU only) -pub fn wait_msec(n: u32) { - // Get the counter frequency - let frq = CNTFRQ_EL0.get(); - - // Calculate number of ticks - let tval = (frq as u32 / 1000) * n; - - // Set the compare value register - CNTP_TVAL_EL0.set(tval); - - // Kick off the counting // Disable timer interrupt - CNTP_CTL_EL0.modify(CNTP_CTL_EL0::ENABLE::SET + CNTP_CTL_EL0::IMASK::SET); - - loop { - // ISTATUS will be one when cval ticks have passed. Continuously check it. - if CNTP_CTL_EL0.is_set(CNTP_CTL_EL0::ISTATUS) { - break; - } - } - - // Disable counting again - CNTP_CTL_EL0.modify(CNTP_CTL_EL0::ENABLE::CLEAR); -} +use cortex_a::asm; /* * diff --git a/0B_exception_levels/Makefile b/0B_exception_levels/Makefile index 26e15973..f1b8db24 100644 --- a/0B_exception_levels/Makefile +++ b/0B_exception_levels/Makefile @@ -63,4 +63,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/0B_exception_levels/kernel8 b/0B_exception_levels/kernel8 index 781038822f4c32ff7f1cf843a1045ba169d0a79c..fd00f9892fef3e75664d7ead6e1e160e6cd00049 100755 GIT binary patch delta 39 vcmcbyjOE5MmWC~i`ho(c#;GP2mIf(CNd_s&sb-eb1q2x-wucKcGBN=G0^s)W#)&D@1q2x-wucKcGBN=G3kM56 diff --git a/0C_virtual_memory/Makefile b/0C_virtual_memory/Makefile index 26e15973..f1b8db24 100644 --- a/0C_virtual_memory/Makefile +++ b/0C_virtual_memory/Makefile @@ -63,4 +63,4 @@ clippy: clean: cargo clean - rm -f kernel8 + diff --git a/0C_virtual_memory/kernel8 b/0C_virtual_memory/kernel8 index 727ac4099686cd6c01d27ee380b2e1aa883bff88..fa3382f313a507ca52f7e91ffdc5272a8818ba37 100755 GIT binary patch delta 654 zcmZvY%}X0W7{=$>M2Yb-yZLez3BC0o+1>19XQzjthtgxP*U}buliVukAJ7ll(u*MN z3dO! z`+g?HjHTdVnl0OoIN*&=L&>(g5q4x$cVmxgHuej?kYT8l+X#GLDBqXDrwbdk z|AOiwzVWCV#DR3fhAU*;@df=_#8)1BsvCJS5RrC>m86eLcy@TXga~*{Ys;wq1In6U AoB#j- delta 626 zcmZvYze`(D6vxjurV^d*doeG4N)Y0plfL)v&Aaa*lyh*GpY zlcE1lfhz)ex0v)mD>R9hxn(e(^QpiFj`-^4^^Sd0IAh@{djjc1_~RYnj)nZQKZ$UP zzTU!@qyFsdq~Tx`Rv#V7Ymn#eX`evI%~Yo9xFCTsJ-5Yy;S zSB6ok#TPf&pC%GCMdXe5hJ2l^9A0oUhqv(Aa^SFV;BnKz7MIPf``N)6gbeFmRhD91 z4&!6vyuwTPZQN(~6Wy2ytMj*mmCBd*A)_FcAx~mWGW{68e5>n`x<25maK^ z#073t7UV=WO^q933^p;D#F$`+i7dgt05|N4h7C)-??h{3ekI)_-Av0h9{>!P&$1iQ)dAv6IsQbw?aY9SbQSGKz<%5 z?{^(pifJYpgUv>$lB!<}~f!$pTtsi`ZdOlelAm*N+GB#mF7~|Z!=H) z|09&sK9FVZGXtNvaJ*^^^W#|iv7#z=lNe_NOpYinxF@JR%g_iO;Ku^$Rqe}|$tY$a blL2E1ekb7V?vR8z*n7|ZkJ*E4KaBqaRc&EI delta 1588 zcmaizPiP!f9LMJux0)&@+n6S<|8SE{ZPH}+&HFR&jiS^-C_+WoLl7&}H#2WEy4|L! z4T9BdF4A}@0riJ?QEx)A1WNZHXuYTx5AiNE7jM;C1i_PUb|)({EcNYSX1|~B@Av!u z9?Zp?rHeO9?W@on89h3SzqEJ0xqW^2*V{K%cRTNnz}6Uk^f-(^R|dzPA?K&@;q;|{ zCNllEg8oRR-zw-+*r>u}<#2`{I+$yu)>YZG80^A(P43H9zJy<-O+Lmyr|si7?xf}u*+f-X zX9>Z&DwnfSwY&49w$V%RwG5Mc^LP{WG+e^r8gTq;8pbO&jy*%pi-j>RHfpxd-mSF@ zcoR1)ww*q$K^b~fa~UA^)Ta3jSXi_4DH zj^;Cb-`SpnX8^a3z(IQ*zaN3mK;Vb-FoQqLL#3;ilv9iG>^wY(~IyO$Jub+24FK_9IVvxuNh;)E9$mj9C zabGWP%Y~OuO5+R8{e%f4b)5KxyxlNZ!fpbxjBQEu5(96y4xKM>7M@?M)E^CKi1({7!72S7#?cERIGW3lO9|c zWg>|M7c{1c(1F1(J$P+QO2V0>QV@@G?s1>uIEDI4F$ts=ERvBC!f3VV=+>E*tE7x0 zZGs>+N;54KO_=cs*NkiFOW{(t*<3sAGD1Acxbz9NjRjRo;3pKCWj_f+MPtcCWWKS#}S46EOKN1odQq diff --git a/0D_cache_performance/kernel8.img b/0D_cache_performance/kernel8.img index d68c9481518e50b021f1db6216a1b09ea652038c..27af497c65662390026224bfd1edfe8a68039884 100755 GIT binary patch delta 28 kcmZqBZ_wY6!^h9yIP=m0=Y^jX-X8kYAoy-`H6JS{0IyFBWB>pF delta 28 kcmZqBZ_wY6!^iKSIsH<@#oeC{JiPnqLD9p_)qJd+0L6q3RR910