From 1cc8152fa1b1aedb9597e870c3729bac020555de Mon Sep 17 00:00:00 2001 From: Andre Richter Date: Thu, 14 Nov 2019 08:44:21 +0100 Subject: [PATCH] Use register 0.4.x register_structs macro --- 04_zero_overhead_abstraction/Cargo.lock | 18 ++-- 04_zero_overhead_abstraction/Cargo.toml | 2 +- 04_zero_overhead_abstraction/README.md | 2 +- 04_zero_overhead_abstraction/kernel | Bin 78984 -> 78976 bytes 04_zero_overhead_abstraction/kernel8.img | Bin 6600 -> 6600 bytes 05_safe_globals/Cargo.lock | 18 ++-- 05_safe_globals/Cargo.toml | 2 +- 05_safe_globals/kernel | Bin 79552 -> 79552 bytes 05_safe_globals/kernel8.img | Bin 6824 -> 6824 bytes 06_drivers_gpio_uart/Cargo.lock | 20 ++--- 06_drivers_gpio_uart/Cargo.toml | 4 +- 06_drivers_gpio_uart/README.md | 82 ++++++++---------- 06_drivers_gpio_uart/kernel | Bin 83584 -> 83568 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 07_uart_chainloader/Cargo.lock | 20 ++--- 07_uart_chainloader/Cargo.toml | 4 +- 07_uart_chainloader/README.md | 4 +- 07_uart_chainloader/kernel | Bin 85408 -> 85408 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 08_timestamps/Cargo.lock | 20 ++--- 08_timestamps/Cargo.toml | 4 +- 08_timestamps/README.md | 2 +- 08_timestamps/kernel | Bin 90144 -> 90144 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 09_hw_debug_JTAG/Cargo.lock | 20 ++--- 09_hw_debug_JTAG/Cargo.toml | 4 +- 09_hw_debug_JTAG/kernel | Bin 90144 -> 90144 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 10_privilege_level/Cargo.lock | 20 ++--- 10_privilege_level/Cargo.toml | 4 +- 10_privilege_level/kernel | Bin 93896 -> 93888 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 11_virtual_memory/Cargo.lock | 20 ++--- 11_virtual_memory/Cargo.toml | 4 +- 11_virtual_memory/kernel | Bin 147056 -> 147048 bytes 11_virtual_memory/kernel8.img | Bin 65560 -> 65560 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- X1_JTAG_boot/Cargo.lock | 20 ++--- X1_JTAG_boot/Cargo.toml | 4 +- X1_JTAG_boot/Makefile | 3 +- X1_JTAG_boot/jtag_boot_rpi3.img | Bin 8936 -> 8936 bytes X1_JTAG_boot/jtag_boot_rpi4.img | Bin 8936 -> 8936 bytes .../src/bsp/driver/bcm/bcm2xxx_gpio.rs | 44 ++++------ .../src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs | 30 ++++--- 50 files changed, 369 insertions(+), 450 deletions(-) diff --git a/04_zero_overhead_abstraction/Cargo.lock b/04_zero_overhead_abstraction/Cargo.lock index 8ce45336..b8ad8ed3 100644 --- a/04_zero_overhead_abstraction/Cargo.lock +++ b/04_zero_overhead_abstraction/Cargo.lock @@ -2,17 +2,17 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -23,19 +23,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/04_zero_overhead_abstraction/Cargo.toml b/04_zero_overhead_abstraction/Cargo.toml index fbdd786b..e091d173 100644 --- a/04_zero_overhead_abstraction/Cargo.toml +++ b/04_zero_overhead_abstraction/Cargo.toml @@ -17,4 +17,4 @@ bsp_rpi4 = ["cortex-a"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } diff --git a/04_zero_overhead_abstraction/README.md b/04_zero_overhead_abstraction/README.md index 541c3eba..079c4981 100644 --- a/04_zero_overhead_abstraction/README.md +++ b/04_zero_overhead_abstraction/README.md @@ -26,7 +26,7 @@ diff -uNr 03_hacky_hello_world/Cargo.toml 04_zero_overhead_abstraction/Cargo.tom r0 = "0.2.*" + +# Optional dependencies -+cortex-a = { version = "2.*", optional = true } ++cortex-a = { version = "2.8.x", optional = true } diff -uNr 03_hacky_hello_world/src/arch/aarch64/start.S 04_zero_overhead_abstraction/src/arch/aarch64/start.S --- 03_hacky_hello_world/src/arch/aarch64/start.S diff --git a/04_zero_overhead_abstraction/kernel b/04_zero_overhead_abstraction/kernel index d7385d48cea8024f13c9b3ec87c49dd425702ecc..b08c294dce616da36e7d09e5c85385aeca65610a 100755 GIT binary patch delta 2023 zcma)5PfQ$D7=PdF0t-b83hXYFWue;wp-$(`yqS4ps@7Cu(iMThwmbSo%6|0q0IUS0*eBVKT;W}fn95{2tWP~l}j z7t<)cRyq&Yw)@al)BFZ#b+avn8wb%=CyKK+fFx`%6Chm;Erl}lEI@naDi1{4C4vxo zFTx+R`VZpssL;>t#j5}brTKUiT?Fp3{v9gE7p_N8;ZX6<2(&?THFEMxwg_+__VIR! zl`|$Hwe#jHS9(! zyuc2(LW~WyK?6(gff&p%w-w?r#~$7T@kW`AWS?MDZE!F-$TbxO&>9NGKarelBgum= z1k3bW0ji)?p)5(>2{wQhL@g3u61c2U;_pj;(F2LE2we6?;ve#jf?)c#KvYA z|H~(W8EXzFsw4_ zuv8D+)j+7>V-M$yT%KetU%PFpIWjRhj_n~^_w$tUziVUP@o9fW`O2wUY-vAaj$6dm zvW7{FJhAeoZB?eQD-zR+sKaJ^p{e+J4rKI>YJ?l`;}_In?EHf=ekYvv8x z%M!z;hSQJS(HBQm-J*GH=?0-#C%K%bIY!pdP3k(BVn64qnmRmuc0_fsrkTX1l;{TU zo$g@rKM8O^FnwnRn-bU2sqXnS=kwNQc_JEiiR19OWvQ)(3@WCMZW63vYEfcQEHn7e zc!Otfg4b{-f}Cw)UbC+IB&R!?k+Ut&GYGMCo#uHevIoSmsHtfV!PwxBuIVPrsL+|v zI78ma>XzYQGoRxFJvlMyj!&|p3P-C){1I<#iaoEw)5VesHBq*nglMtefagHDRL|Zu GAoUkLESmiQ delta 1992 zcma)5U1%It6uxJ6lSVCOQ?uFK#3Y;SrrDS}xp#i<%v6z-8tX68BGd=5onNg@Vo287 z(1#@SK}8T(8gCy2gCM2gLj&SIS&|2_K2;@XD+)>KONv-U1cQ=zXXlPTb&+1!xjWza z&Uemt?w#3<C&@T;V=MTUG;r0p`g>=Pkm_6jqwpG^mqsq&G z&g4;kWhrswtL@Y9#nvF&ylehDz{TZE<@ylX>>18hR$ZuU6r}SdG<#@+Cv6mx=hsi8 z$|@rO`Nn;j3TLsy0G*}FTn}w+YY3qW3I0P%|ER}P9u)Q1_et23JiEQks%HVRQhFqb z&HztXy@o=y%6bA-cR~|PFuR@qzt91tM_%JR2?2`RPKvx!J0iUap*JY- zj|ILU@Vvk;GSUIvtaLY|*wGGNk^kZFnS2sT<_`#O0G3+>P}aOI|neafv# z5}+8rB$BR%7P{HfyhLuBw-Is{#2ms?4cCpDO=w^(Tz;mbHa!WY+M;Pi9E9>UoSPQe zG2SQec)BruPs~sJTW3h%@u|dojpKZ%FZ@*?p6anEfZ_sw)C3S(7Wj%NU<##-6rE07 zV5i{k6{ipz!)&dSj|O+a$y{(-G@5Kf)NHHJT4T#ya4vU)qv1tq%0%JVQL#GL4ev_Q z5U}1}IFT#!yBSXSadB_s3w4n#_Cf{#F$L5t{Wyc zR7_2(7?cvK-lBpUD$M+!gyCZon*p&r#r6W*B>{D8kGi^UQO60WjH4!~W>AA_x}~cY z#+IS#H0r_BeaoVXZ`y%Ni0OHjrV!oJao|$JCZ>#^5jLo05?!Nwz$#W1Ma4wBMTvM2 zbre{a3_V%bbA65as_6u(ZelWmj!c#9$ufIihNl|G{4sZ8njMzm;p(OgJCfBc1ss5P In5{wgpFA3>uK)l5 diff --git a/04_zero_overhead_abstraction/kernel8.img b/04_zero_overhead_abstraction/kernel8.img index 60f5c5e4809d35738e7623dfba65e593136dcd0f..fea7da7895454b4484d75b0f2bc974c2c3a428dc 100755 GIT binary patch delta 305 zcmX?Me8PBw43iP#L^*XP2JwmRb|A9dTwZ))B5OlXa)ZRgN6rir%NZG_C@?5o`QOZV z@t-!sPmzfa4Y(S`Cce^V_^HSsK3SSklJVhWQ$__gMzM(?foMiql?y;k4FCR{FfcG| zU^%5T2FD8VEe%)&5*5vbz9V+N4!iI12WCfaQN%Ph^va)3Gh+T;a{ zIvmIU{htnU!e$B9JN%44CVv&F7W7Un%1g~rC`io9OjhJ#U?`Y;QB+=Wf+z>jN(Kf# zFv-9$56TDH00wg=3yO&gUtxx*TEGaQ=P+|j&K5P5dcXqVLlrZ?bZLlewi4@O1^~Yv BPOSg{ delta 328 zcmX?Me8PBw3{xV*L^*XP2Z@R9b|A9dTv>EtB5OlXa)a2!N6rir%NZG_C@?5oIlvr$ z?SC`l#edoiKZPgWHBdPyKJk@4!%sz^rU%K46JIJbt<+#>2zm+B^HP~*<)dbXi4P_l zGAgh+icbV8njFq3t8pG^7{kB+CJYP=8<>HZ;Q*3lKn*TX%O*cz(P5eK|Nr#OGZ-b9 zL|s`JrZ57PKX}XlGHT)@W`>D+n~yR}Gj5h(y~EG=bMjY_>d7BO4Gga^Z~)Cl0H7`~ z&=7%$d#4uVrRFFUB<5u%D{?U~9GKiFDzErJ6e7z9Rs9aihv~jD`Jkw{5DyDP)eS}n MeT8|ml~^A$0Iv#LkpKVy diff --git a/05_safe_globals/Cargo.lock b/05_safe_globals/Cargo.lock index 8ce45336..b8ad8ed3 100644 --- a/05_safe_globals/Cargo.lock +++ b/05_safe_globals/Cargo.lock @@ -2,17 +2,17 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -23,19 +23,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/05_safe_globals/Cargo.toml b/05_safe_globals/Cargo.toml index fbdd786b..e091d173 100644 --- a/05_safe_globals/Cargo.toml +++ b/05_safe_globals/Cargo.toml @@ -17,4 +17,4 @@ bsp_rpi4 = ["cortex-a"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } diff --git a/05_safe_globals/kernel b/05_safe_globals/kernel index 4304d46edd133337db865c288b55bf8712550ab5..f72faf2b5a8029265c24ff7cf097a79afc3487e3 100755 GIT binary patch delta 2195 zcmah|Uu+ab7@u$N2vMga?gu|3a}=C>4F; z&hQ|KhU6kJ;Q@swsV``JxcFq7D2c|znluWDsSWr5CVgn+rHN2yZ)Y`>BTTaM?f!n> z{N^{`d^PNT+0fXq5)9q zk1`}0W#3ta7BdKanfV~sxYMOgWS~BHrxs`5l6%eFUm{5IDfyt?4|_Q%`KGSHc5VGo z8l3}~GItv_A_KQlsIjkkJPrFHJ()W6>jjyWx%6O3MBbZ|E8zDv@Ta)69==}NAB>F# zBc)@`=&)CQ3ZVnys|`@>Kej>IlH-}yjL<3dEq7^+e<0@L8KEThrPZ4j$If&{^lt!~ zKeHl9i3Jj&>1UhyEX<~J>m(1FhUV6*m1?Kg#M%O6;ezNXz)lzudt?x23b0X>HbEwL zKp9inh_zlcG$f|vvRrbGgx;g*Q{wn0$ch^U=+1rEfsm#F+OEztt&%T_sl43zS{%L? z&U28(Keosex|)CZJU_Q^KuKYg2AUD&&5*6#RJ5!|!nES7!vCwAVsFc+q5tL53g0N} z7U3wVuND)>6rSjFm47|PHPk1ZB6Q_$s48DpWz$t&L0l=yvl?;eivtr=^2lPk0GS%f zK5RVOS_o+Qy}l_8MFtZ*F@APse7)0Z<6gD#w89hplEOccI%%}9q&~&9B9ujGGi1si zFYBb7y1oP_;)fy}hPuF|R^RL^!ROE+7NV~gn;m8NOw(qO_+ks3gdS0@$SygtN}84( zaCK#T$Z=V;M9tmMzZ{n#^;F$+&5Y z`6^Uuz8*N-Wz2FdI|zKfw>mO%^6e^-4ltpFamuhEYsLw3M&B8&8Ws<+WtfCxgZRFu z+oo$8lsh)&IPjgS9t&V<5{q)(&@D^H)V8^4v{9(FlfX}sV4OI%!3{6qe&Au>l~#1@ z5ZlI-x|~%L1;VIda>^~;V8oEuXwuk3qELIR1W_iQDDhYY>q!b>NV$pikP+7jWc8WP z3=*1_8B*e5PQ#>_ZEiz+r$c$8?lT(Nu3?!TrlBtzMYg6hHZBfg=o1fgc)fWU!>6g{ OZVE#H1LBGW#eV_mhusAL delta 2220 zcma)6UrZcD9G>6a5vXnCF!KL^BOE;_^qAS5-JR9elo$wz28yZwVp8|^b}JFFP;Bgr zcS&C~YRx5(c`|LEgub+i4;P<2lE(N{F)jLyPS&pp;q{$6?s-c+lMhv#YsaSLG)i)Ka*09u?jJw2(lF zFH4b=YrE&+i@*BNc8co&xM#4n@bduL-pxgpJ4>yFbq5N!yOiY~l%Kr)I1=ONvaj$f ze-9ur?q>+p&)(RNwrdc&RCULnA!Rd*d*`PsgE&Kj(+H{4mlc!g@Q@@TEA! z_-b5?YTBS@^r~2`AVA^iqEc;9i2J)tNV|O!Uz2!V;t7fWz*kzJktbTArumZOB!$fK zKtb2|ig4H*-bhFfO8N$$Z50w5?GPi4WegDBbLltt3A@T2d{v74;cwr;KWl?nu2JS7 zd2{~5@LNn=c@%B!2D3Zy;J@HU$|X|JFMEzNSjHo0sU;{ts5D&0A&0_}hQwGvpspW^XJ%xjJ{@Z~-oQgjNzwPkOl%V?$1T>T1(31g+PVwV{hIT%c zf~UHSbJH1heqKH7oO(TtQSuEDUMYX&>5$@Ir+`d`vvMN2CnAxcvpkPv zsAj86FR3>PmGxELuurb7l` JoL@Ge<8R>I*){+G diff --git a/05_safe_globals/kernel8.img b/05_safe_globals/kernel8.img index 817b14957ae23c6d0f21ad22e9a1bdb66dce5013..1dc7c953c3c31c6e59a17ea5a60e3e9f89974aa3 100755 GIT binary patch delta 381 zcmZ2sy25mV3{wo_L^*w?2C0euZXj|xn7nT;FFi4lwIL{(L1yBkW`>E~j0{s07!LH3B0d0El_rD1PP@Wlx85~eu z5)PE#Y`~<$B$~j&FohAQ;=yBvi6HAAF*8i`++4`w&&YCsIsV!tCLNBs|Nc)0IeYT~ z);s)+PbSY5-7M&xT9lWXqfn5Tmzk`{#lR3Sd83%TcYzqtK|sI3C7f7%Q`)hC-W8fZ95Pkg1%@biB?^GZda{s+m76JIJbt<+#>2zu$v0A#bQ z1R3yoaxbHTKS%*k5Ty78H^Wa328InB2c;&yP-j}n!PpS=q8_67A<(u5fB%~>0Ogs1 zn85+nHDOTKOzvUTVQKjPfBNPhj5cV z!_WA1@?6o)lP`!F80s(rtwsVsU0`rQ1S0O8T9lWXqfn5Tmzk`{#lWy&a-x{L*8wqz iEFV<$IVc~d+k^=s4>KD^H?Tlh7EpN)md#S)earxqXKX @@ -134,7 +134,7 @@ diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_gpio.rs 06_drivers_gpio_uar + +use crate::{arch, arch::sync::NullLock, interface}; +use core::ops; -+use register::{mmio::ReadWrite, register_bitfields}; ++use register::{mmio::ReadWrite, register_bitfields, register_structs}; + +// GPIO registers. +// @@ -177,33 +177,21 @@ diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_gpio.rs 06_drivers_gpio_uar + ] +} + -+#[allow(non_snake_case)] -+#[repr(C)] -+pub struct RegisterBlock { -+ pub GPFSEL0: ReadWrite, // 0x00 -+ pub GPFSEL1: ReadWrite, // 0x04 -+ pub GPFSEL2: ReadWrite, // 0x08 -+ pub GPFSEL3: ReadWrite, // 0x0C -+ pub GPFSEL4: ReadWrite, // 0x10 -+ pub GPFSEL5: ReadWrite, // 0x14 -+ __reserved_0: u32, // 0x18 -+ GPSET0: ReadWrite, // 0x1C -+ GPSET1: ReadWrite, // 0x20 -+ __reserved_1: u32, // -+ GPCLR0: ReadWrite, // 0x28 -+ __reserved_2: [u32; 2], // -+ GPLEV0: ReadWrite, // 0x34 -+ GPLEV1: ReadWrite, // 0x38 -+ __reserved_3: u32, // -+ GPEDS0: ReadWrite, // 0x40 -+ GPEDS1: ReadWrite, // 0x44 -+ __reserved_4: [u32; 7], // -+ GPHEN0: ReadWrite, // 0x64 -+ GPHEN1: ReadWrite, // 0x68 -+ __reserved_5: [u32; 10], // -+ pub GPPUD: ReadWrite, // 0x94 -+ pub GPPUDCLK0: ReadWrite, // 0x98 -+ pub GPPUDCLK1: ReadWrite, // 0x9C ++register_structs! { ++ #[allow(non_snake_case)] ++ RegisterBlock { ++ (0x00 => GPFSEL0: ReadWrite), ++ (0x04 => GPFSEL1: ReadWrite), ++ (0x08 => GPFSEL2: ReadWrite), ++ (0x0C => GPFSEL3: ReadWrite), ++ (0x10 => GPFSEL4: ReadWrite), ++ (0x14 => GPFSEL5: ReadWrite), ++ (0x18 => _reserved1), ++ (0x94 => GPPUD: ReadWrite), ++ (0x98 => GPPUDCLK0: ReadWrite), ++ (0x9C => GPPUDCLK1: ReadWrite), ++ (0xA0 => @END), ++ } +} + +/// The driver's private data. @@ -287,7 +275,7 @@ diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_gpio.rs 06_drivers_gpio_uar diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs --- 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ 06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs -@@ -0,0 +1,313 @@ +@@ -0,0 +1,315 @@ +// SPDX-License-Identifier: MIT +// +// Copyright (c) 2018-2019 Andre Richter @@ -296,7 +284,7 @@ diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 06_drivers_gp + +use crate::{arch, arch::sync::NullLock, interface}; +use core::{fmt, ops}; -+use register::{mmio::*, register_bitfields}; ++use register::{mmio::*, register_bitfields, register_structs}; + +// PL011 UART registers. +// @@ -399,19 +387,21 @@ diff -uNr 05_safe_globals/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 06_drivers_gp + ] +} + -+#[allow(non_snake_case)] -+#[repr(C)] -+pub struct RegisterBlock { -+ DR: ReadWrite, // 0x00 -+ __reserved_0: [u32; 5], // 0x04 -+ FR: ReadOnly, // 0x18 -+ __reserved_1: [u32; 2], // 0x1c -+ IBRD: WriteOnly, // 0x24 -+ FBRD: WriteOnly, // 0x28 -+ LCRH: WriteOnly, // 0x2C -+ CR: WriteOnly, // 0x30 -+ __reserved_2: [u32; 4], // 0x34 -+ ICR: WriteOnly, // 0x44 ++register_structs! { ++ #[allow(non_snake_case)] ++ RegisterBlock { ++ (0x00 => DR: ReadWrite), ++ (0x04 => _reserved1), ++ (0x18 => FR: ReadOnly), ++ (0x1c => _reserved2), ++ (0x24 => IBRD: WriteOnly), ++ (0x28 => FBRD: WriteOnly), ++ (0x2c => LCRH: WriteOnly), ++ (0x30 => CR: WriteOnly), ++ (0x34 => _reserved3), ++ (0x44 => ICR: WriteOnly), ++ (0x48 => @END), ++ } +} + +/// The driver's mutex protected part. diff --git a/06_drivers_gpio_uart/kernel b/06_drivers_gpio_uart/kernel index 968f61f72fa19dff1325fa8616ce9bac10f94d77..6731a81ed9ef320cf0e99027b0d225283f05dade 100755 GIT binary patch delta 2010 zcmbVMO=w+36uu|1nxxj=s2E-?ZS!OEQpxT7|AZPFG5&07q`0UQ!u;Jtj7f-1tE(uu zNJXt(jVq~WQ8#v@JOv@vl^a1pa8m>~-3b;11vk#iy-`A6Xz?xP-8tVm-}&aune*D) zyMBLb*Sk$vetqnVF_;@{T<^;==<3Q2HF~o4FW+3V?4j1DgRlmT>$@v_W?zM)8gIs_ zVHkjK=WDof%Cg}&*i5jmrLR9&0nM#!@!2MvYoNVZ*3|{sPd(eoH{!2N z__*;C5X;*Y1I-xJuA2d$7pnsbJ|;Y9xn-4(A; zxHGr3q}nQ4mca#$aXe08^&~cg862GV6eGmdboOFcSquxsmbP&>w_0G-*^E1x6otZlmi%!Ia>}XZl$SZ}&W}iR7+|o** zvEZ<;A5+bV)s#w2E%RhL?q)DDXhK;MPPH^dGUjhCPJExk13ea5Dpt>k*4G?HyL06P z@yaTv5*em09(W7}T74RZAg59~iIg)ID=u8>iwW4Di2W zf-)|IHQXjOj4`7e*X@4xrLe&f)nwVqN&BlfMmxi3|`=x1OBaQeJQ}o3Pl-Vpa@c=6_Fw$2SJd&`B3pi@TH3V0D^^n0QYnzku)dfJj`L%f34rT%-Z{( z4>~V=*!j^YTzGrz`!QG?sD0NHMbOq3JyEMf`7gfrjH0{EuLht2wUO>ZUwFLGQK@r3 zI|zO7tABA2PQw}h!ysI$O_s2WrSo{{{8}>^g6jb9`06m6Z|gYFe190`q4siD4sVan z9@&}vn!hsweYM-Ayj04CQxu)?1EWFyx-9Lz!-X(fX8YTp8in(<>E0-6YlG;w%1-!A ze|r?J*4_=B=JMTAex!{4%zrT!JE}I@wH)!el#4`pXlchBvAOpJ6!r z-`gz=3o#|qNSR?I9Wohp{y2eWV`W^LB!&yj70(FEt=j)W;Ne&krwL-Im4pbblWpli zf1Sbuv7F@W*wu}W_-Wd zcQ6=lFe6eva*G zercYiYwOlea5!8woFL6p5r(e9Z1J4$VK6k1BAQYxoHocXjMH7S@t<>etim?9<13rX z%^x|8w8u=@@Oi8@4k>1k^wp=Kui35PNr|P8@^&SP9}dF)UvRZj!_= z1?y4m1R^f62-)Dv@mzg*`P@n!3x>3kh+vL5BSaJJ@e~~LKOKYKae)nHjuGmNb_vh6 zf@JVjL}RHa#t0#Xa1qrr1&_ulaabg&N-PtKaplnz^f$1kEWtquOXw&u|HF!s)wR_+ z3TtGfVKh}b3kM>V$XOZoixJDT#&uM-fSHz>VkI?_NK%BbE(n^)G}K0vPH`hMB$Ol( zQrx8oXBcP6HljsCyAdr3xGZ8nLgQW)EfHitgrzoP))9pSr#cCTTsp%TCCH?l8oS*F zBjJ9K3KPvaAzVv>iZ(25?1R|qV{e2rLI@*iU>l;1;#5(sEg~7GT&49b!tRaAYnWcG z+x-Z1@11;W8ZK6uO%ahvmRie@)q2hc^PB$C3{+xkm1Qh^-*A`7aAf?|85oO^&?;P_ zBHs(f3HN`^z?E312{Bq3nctg)XU&hFf>nr-Qi@?>s5HbRg8J$#(3m5cg`>lqq9oJK WHD8#8SK6E3oP;X?!~WDWaO7W^(B;Vh diff --git a/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_gpio.rs index a9ceda61..bc66bbcc 100644 --- a/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -49,33 +49,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index 0e3c202a..812eb73c 100644 --- a/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/07_uart_chainloader/Cargo.lock b/07_uart_chainloader/Cargo.lock index ce4a9f78..d214801d 100644 --- a/07_uart_chainloader/Cargo.lock +++ b/07_uart_chainloader/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/07_uart_chainloader/Cargo.toml b/07_uart_chainloader/Cargo.toml index cf0f0636..111fe74b 100644 --- a/07_uart_chainloader/Cargo.toml +++ b/07_uart_chainloader/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/07_uart_chainloader/README.md b/07_uart_chainloader/README.md index 2cca69d4..a291976b 100644 --- a/07_uart_chainloader/README.md +++ b/07_uart_chainloader/README.md @@ -162,7 +162,7 @@ diff -uNr 06_drivers_gpio_uart/src/arch/aarch64.rs 07_uart_chainloader/src/arch/ diff -uNr 06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs --- 06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ 07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs -@@ -277,6 +277,18 @@ +@@ -279,6 +279,18 @@ let mut r = &self.inner; r.lock(|inner| fmt::Write::write_fmt(inner, args)) } @@ -181,7 +181,7 @@ diff -uNr 06_drivers_gpio_uart/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 07_uart_ } impl interface::console::Read for PL011Uart { -@@ -293,14 +305,19 @@ +@@ -295,14 +307,19 @@ } // Read one character. diff --git a/07_uart_chainloader/kernel b/07_uart_chainloader/kernel index 4e57cd28441a3047362e8c4f4207d4ec75c3bbbf..185f5303977c35679bd4a2769cabc44143d4c4e6 100755 GIT binary patch delta 2138 zcmbW2O^B6M7{}jdCTq-`c^x&qX84iPsLea)`=c?NDX%v6F%Ch5o8f%DW|~7+t#HvK zR3Nk&2+qQUag_tXAOv?Kn2R76Nl^q*i-I<-%3X`V&Yky;rCu|77w2-G|8sulf1dMk zXU{B|J+tJUPvQL5+SO%Q23_6R9~-al%F>s&n)LNGFK>l;!22Jl^v^a`I;!Ms_3|w1 z>Vj-%&&}iJ)e+28QDI18}MK~yM~w&I-V2o z;orR{B<#;MVZmEWgdmz}s^VD*&*aEEZ%8n#M3`YJT2UPf1>;(&agL}=o`{~ zG1qW!ZfQxiRkSRF3mW5iPQi%*YzQ+rIPWP&h^u;bI5duiBgLY(L3i*(fl=%mhAp`) zDOc1Aq^vPU``FMhG_IME%3#fqRti&n2L|qpCbx#;?;3VYE5klO?AFnh zU*0i%+f)n5v{UYM(V5&CEIJ_y*)gg*Ms>F3twLmz2VP)qsu5_c4a2$>shFHtO{vt> zGEeFY+px`qvLu{pX^3RZr`jB!a)&1y;ozZT$3x>-VUeZc#BtG_8HUO3J|PXY1WV+U z6b#4fyI?q1P7trGaw@Sgb#dR5@NG_|bP_3NELL1N5sML6pNnL}Imwmxj$q~DffU^? ztrNjcsk%Cuz9<+Az-ClkREa2@nSy5N@^@P zM(J2;CDXB<9f8#mMq$+oshPD{b5A{H-l2MnwUV&C`^Uzye8pL>B{RafWXx&zFU(g* zVf{4rh>C!$x2+mlSI^ARsiOsDTnKBpP39P5MmerqH^rC22FFZ++H1SrEB%iI+#*b; z^89}Uxtj^bsa1rfCqNpbsKDGCE2#0Malw?jm|k$vagVBH+?7D@xXBej5>F`+sFcZs z6_!v``cz0G9Z_`pAEiVRv-IL{L`W(>MU1ow)+Pial5=H{GQx9giDOK7>6i~U_Chel zCE-Fbo@OC}AbB^!<~Cxn3>^@0=WaL|&(@)@FCA6OS>V`|={At~_-=SNFBQ`~D5jXD znEDW}?uISH!WoHVP@Wshv77la6vyYZB2~VI+DIOvfI@7+PVe_e%2yL!0Tl}ijUgs=?##VFXem4j8WvU} z8#OT@(cA@!utJOpAu)LyBN7u6;sz2n#FfU4D`jWg;CY=_4fu-2S|D-CzYJ^E=iKE zE=V@@+`I3Kc;Q*N2(QIm{qP2yi`V*L1q{a9{cyGR!=u%n^pR>$*=8+{R|e2)cf39T zSK-^{yBlCNz(?`YMnpW`T>Bi10W6P42VqBT*K9mpN&aNTSlVX17jF(CW-q4?lR~Wjz)4a}LKfu;V1%@*k?+CQ+ zsUAn-S_vy^e=KWdYC+QTOoeC%kt~dRTk`9e#oh#xj~7*PPg}njPqpM<+w#v#D|uU6 z-Wji;42$EBt;f{tqjvPMiuF}*^e-Dvd0eXjyH{3@k}43ziX4c+Hry zHvdan7*h)mr-A3Wv6APKsbB<&7YrQlC%Ghr4!;;VQ7q6O9jh?2!VPGa2^KjjAr+n<8Kx=&IqRp$;w<7Tyf*r zJWz4}?kZl{(fp5B%{uc=zB5^8a%ZsWgvfM9tLbR9$+|Z)m5lFuNfc8J&tq*ERxWpv z5i1LYg)>+mTAwY$0H(j-R0ZpZ6O>}Yr>BZT;|;(6;IV1nIF^ZN8RX>giRPJM81G(2 zgy&LtRZ!!ZC-LqU7*2)pSaEM%AVxT%7tbE4H> z(&c&Fht`cYD8fSS3GwJFX+4{mI5C+~L4+YpGp>b|QYy)KJiiT|-k_+XA_&HVvmuvd zdjqo)`_dXlHIsx`Qu+5q7=gZ*3l^x#3zK`HjF6_@N|LI&l)Ga`c;m=Hv18A!F{%$x z%SBGnA6qj0^>#C8cFv5oRW{4oClw1X{)L z{{bwUnJw461kZgbd|-wstWJ(+)ximYlkW=2ou5kso?mhN^k5RC71n6o&ceR|X0rAn z<|hQFlyaJ5A30{7k=$@=Jz=Hf(iC%mPAymE(LaE&W){I8(6w8)!^!w*9nz(~z>dz# z!h1oyjhnZ_>C}7Ug}~C{hg0J)#hcq<-6r9wQ8~q_{JIW2l|+{~Zz34ZN*h9iQ8<}erAj7^2&yPU okSe}E3a_NL$eFXo>DDiS$+CH86fQs1Jof_p1o#&|wHsFd2`-E>VgLXD diff --git a/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_gpio.rs index a9ceda61..bc66bbcc 100644 --- a/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -49,33 +49,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index 3f3dfaae..27e6deca 100644 --- a/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/08_timestamps/Cargo.lock b/08_timestamps/Cargo.lock index ce4a9f78..d214801d 100644 --- a/08_timestamps/Cargo.lock +++ b/08_timestamps/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/08_timestamps/Cargo.toml b/08_timestamps/Cargo.toml index cf0f0636..111fe74b 100644 --- a/08_timestamps/Cargo.toml +++ b/08_timestamps/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/08_timestamps/README.md b/08_timestamps/README.md index 08dc5f81..27b84193 100644 --- a/08_timestamps/README.md +++ b/08_timestamps/README.md @@ -239,7 +239,7 @@ diff -uNr 07_uart_chainloader/src/arch/aarch64.rs 08_timestamps/src/arch/aarch64 diff -uNr 07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs 08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs --- 07_uart_chainloader/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ 08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs -@@ -305,7 +305,14 @@ +@@ -307,7 +307,14 @@ } // Read one character. diff --git a/08_timestamps/kernel b/08_timestamps/kernel index 8f87a370ab2611a38ee0758049410e9ccc1556a2..e310920d7a73a3c25c0d2640e688e01dc2740142 100755 GIT binary patch delta 2334 zcmbVMOKep|7(V~4M2H1$QK`ic0>M}?UgrG>uaZzGh>A9`Kn!JGr#3*rwg@pX7YuP{ zjD|Sssw{l0SeaaPg)5^A1tBqN;=-NL1;mYU<(zxYjTCRK@hoO?{%_{{zwiHNX71{e zxvNXge+-}SHDk-O3~IIP+#^e~;;XmEEPHo(>st<20N#lgB=qAOz2&-Vo6B_%RqGzC z_SYYqAD@d~N;nGxahHOA_$VG$Fb==QPZfL!KSraWzqWQo>tzjZ10G*dat}314pec! zp2XB@keyyWU)!T`*VaT+YyGkn)&cwwmu*kvPqrqvg9P{{Ufu!y1558KNPDu3mYd5l z8I0Exyylt8&)}947_4%>)f;O&;e&zSS5=zO{O!l%=R1?3EAjiC@W#Nc`%8t}`pQ)g zR4m(D7lz<$&wxmQ!oeTwOT1Iv^RaJtVrjNE?S=_}*W#PQ$$^Qthg0;6*0MctFTmB< zw>SN+jk}5|nNHIHO%$s#$Zl4Qoj!aPUo7AQNp=DEt}YV}Rf67+mkao}3eK_;-dMqd z@p=K@NOFta7uS~XwtGsv7GVTNmn!b2#VMiV^CNJn+4+0iO`K`qY~#5G$&QEVsc@n( zA3_C2yJNU}cmbw6NqXB-%H%BG-Ul0%Vhj`RbsDLXTn=|9=XZzWcl%&RT@x0(#Y70A znWiefvLAFjx*t~7k$2vZU|5bY!&DT|o_f#77=I5_VqMu@BK0`GMBw@G%l>bCWNcxgvP*R`^Hu~pZ_x@ekc*R>B* z&56~NN=+^EWVjvPWI~=3PPH^dGUijcXHU7~^4<}w+;BF2PRY&>u3>FB1*XwT&H3xin)qEkHSQg3&ssXfzluYBV;%;Q>UgHlyM=f;Wn9K zj2Y#)E)JW|g$<6G1}clv#p8b@z-@wN7`>nblQm}MT%*eo+!yU;_1xDQpCa(6+_3y zf($0r*GQfoE|)F@lUh22_6Vy{igAa1M}#B_aUvxrOp7$7tDB`)uLF0hbzC+EBXugJ zlSnyZvEsssXvUyfXBefldFrcYoLd`jjRCC_%hGEg^S~tw=~a&O5NxPZ#nN@7S_P&J z&O;1`;LnxmW?Rkz$0kq2Bu*WMi}gI!i3i0LvlLSwV(kdLTF)6tZ!Zlx)iK>a)4Fs7 SzUpZmI|_3EHzOQ_b$ zT)nyU>dmFEe-1ZzU*D=EfsT&k!qdx={8wrIC&`IbjXNAZ0|?=ggdV(lWwGwov&Fh~ z<+>NkdS%=E`iJ2g3Fo0F>{ZYM*TXRdBXBo-q2LqvAQ%lj9lvxnUe#~~@UgCfyT4j+ zppyH|D5j$WlBurw+MW)3cSM?`ad!u-2ly#0-xbM^G{$y;1h^Hh?S`J->qf$P2Z)|8si{Ox1mt3A=sr{U*4@K*01j~5De zb{DIjC|PziF7?Ct&R!M^xr4tp6nLwz4z>pmC-xE$WDMF%6{UM*I?ZY5njpRLs51PuUuPvu)h@aak!Slzn5^5 z6!4}JekR<`;oDJezWef11-x@fi3b>fp=Esb+yt5Cr^1N=c(2}idoCS4TgAzy3ssVw zcGHt?ygDC3IY!%KxP5sMrUyw@Hl-9FXW`yK*rb>hDJPlXDHT*%Qfp7nA1;R<55n#W zCDKZnVI)1W8TH}fA<*IEAy{2e)~Ci;E-+U-BP@sZS2XdOAeK5wh|t>P)&8|Jv(s3f z^3)imIW?RJuNVqj55w6yG90DOXP8mtEy3*tKIn4JBzstO)A|B0&8ld-R<>`pYP(qH zLle!uc3V!6=BbE|R1}VD&GOb1(UfB0wMCX;oYs=rGwJD(X*W7HGwY^js%(~fK5=%u zaqD?dofW2BbnUeDD2@ur@arJ-G`0`IK*z8W#B*X<-cN3gsU;)FUl2u{FfN`W6J~5O z_Evj=h&K))=c(YhRvjNdH&Mk5OUo)PM;_J(J38)$S! zB&QNdg&5^5^bNt5;gonROsb4yLNTr$R735|6rG+LV+RHg9*JtOrp(~DJ`UPbV*ic& z{UO+}Su;&C7sErOV$}O`gU~Uwm{KhfR$Pnl+YpS_b>@|`E*gl@;gZ%8GkIpRinvKJ zL&9UKaE7^%n50a3hAlIh=2hJ4iB=df85s$YjA4bye`FvzLp^WnVicOl6fs1UPH|>Q zY?nkxai5|n31_B?S|ad*J{KY$$xy%V<9|~$eKgathzLU@Vp$ev=qPo>*q9)r3{ldN zI*xg5`5+QYDqE5K)`Dpn z^Y*Cy^^%}$!=eP<3L&hdQMx7CDoz#E+98s0%2hfShlNL^l+d1`Hb+744|BmOOX8i^ z^4KmeVZ|^Etcx+`F@Z7BA|6}9nujWeGoZt;IlMCrgB7HdVwhMeEwM(>@aHhl3P&=F zC!TplNv6FI{3vX!AfZ*fr$s!vlySnt=u!B4HFIe^&?ZZrW60?+bqp?7oKudmn9g|T p%6JEbCCA~7icSr&T3MOj;)G|7E63s6&c?};@DaeB058M(e*ncDN(cY| diff --git a/08_timestamps/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/08_timestamps/src/bsp/driver/bcm/bcm2xxx_gpio.rs index a9ceda61..bc66bbcc 100644 --- a/08_timestamps/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/08_timestamps/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -49,33 +49,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index a0c0d593..35417674 100644 --- a/08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/08_timestamps/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/09_hw_debug_JTAG/Cargo.lock b/09_hw_debug_JTAG/Cargo.lock index ce4a9f78..d214801d 100644 --- a/09_hw_debug_JTAG/Cargo.lock +++ b/09_hw_debug_JTAG/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/09_hw_debug_JTAG/Cargo.toml b/09_hw_debug_JTAG/Cargo.toml index cf0f0636..111fe74b 100644 --- a/09_hw_debug_JTAG/Cargo.toml +++ b/09_hw_debug_JTAG/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/09_hw_debug_JTAG/kernel b/09_hw_debug_JTAG/kernel index 8f87a370ab2611a38ee0758049410e9ccc1556a2..e310920d7a73a3c25c0d2640e688e01dc2740142 100755 GIT binary patch delta 2334 zcmbVMOKep|7(V~4M2H1$QK`ic0>M}?UgrG>uaZzGh>A9`Kn!JGr#3*rwg@pX7YuP{ zjD|Sssw{l0SeaaPg)5^A1tBqN;=-NL1;mYU<(zxYjTCRK@hoO?{%_{{zwiHNX71{e zxvNXge+-}SHDk-O3~IIP+#^e~;;XmEEPHo(>st<20N#lgB=qAOz2&-Vo6B_%RqGzC z_SYYqAD@d~N;nGxahHOA_$VG$Fb==QPZfL!KSraWzqWQo>tzjZ10G*dat}314pec! zp2XB@keyyWU)!T`*VaT+YyGkn)&cwwmu*kvPqrqvg9P{{Ufu!y1558KNPDu3mYd5l z8I0Exyylt8&)}947_4%>)f;O&;e&zSS5=zO{O!l%=R1?3EAjiC@W#Nc`%8t}`pQ)g zR4m(D7lz<$&wxmQ!oeTwOT1Iv^RaJtVrjNE?S=_}*W#PQ$$^Qthg0;6*0MctFTmB< zw>SN+jk}5|nNHIHO%$s#$Zl4Qoj!aPUo7AQNp=DEt}YV}Rf67+mkao}3eK_;-dMqd z@p=K@NOFta7uS~XwtGsv7GVTNmn!b2#VMiV^CNJn+4+0iO`K`qY~#5G$&QEVsc@n( zA3_C2yJNU}cmbw6NqXB-%H%BG-Ul0%Vhj`RbsDLXTn=|9=XZzWcl%&RT@x0(#Y70A znWiefvLAFjx*t~7k$2vZU|5bY!&DT|o_f#77=I5_VqMu@BK0`GMBw@G%l>bCWNcxgvP*R`^Hu~pZ_x@ekc*R>B* z&56~NN=+^EWVjvPWI~=3PPH^dGUijcXHU7~^4<}w+;BF2PRY&>u3>FB1*XwT&H3xin)qEkHSQg3&ssXfzluYBV;%;Q>UgHlyM=f;Wn9K zj2Y#)E)JW|g$<6G1}clv#p8b@z-@wN7`>nblQm}MT%*eo+!yU;_1xDQpCa(6+_3y zf($0r*GQfoE|)F@lUh22_6Vy{igAa1M}#B_aUvxrOp7$7tDB`)uLF0hbzC+EBXugJ zlSnyZvEsssXvUyfXBefldFrcYoLd`jjRCC_%hGEg^S~tw=~a&O5NxPZ#nN@7S_P&J z&O;1`;LnxmW?Rkz$0kq2Bu*WMi}gI!i3i0LvlLSwV(kdLTF)6tZ!Zlx)iK>a)4Fs7 SzUpZmI|_3EHzOQ_b$ zT)nyU>dmFEe-1ZzU*D=EfsT&k!qdx={8wrIC&`IbjXNAZ0|?=ggdV(lWwGwov&Fh~ z<+>NkdS%=E`iJ2g3Fo0F>{ZYM*TXRdBXBo-q2LqvAQ%lj9lvxnUe#~~@UgCfyT4j+ zppyH|D5j$WlBurw+MW)3cSM?`ad!u-2ly#0-xbM^G{$y;1h^Hh?S`J->qf$P2Z)|8si{Ox1mt3A=sr{U*4@K*01j~5De zb{DIjC|PziF7?Ct&R!M^xr4tp6nLwz4z>pmC-xE$WDMF%6{UM*I?ZY5njpRLs51PuUuPvu)h@aak!Slzn5^5 z6!4}JekR<`;oDJezWef11-x@fi3b>fp=Esb+yt5Cr^1N=c(2}idoCS4TgAzy3ssVw zcGHt?ygDC3IY!%KxP5sMrUyw@Hl-9FXW`yK*rb>hDJPlXDHT*%Qfp7nA1;R<55n#W zCDKZnVI)1W8TH}fA<*IEAy{2e)~Ci;E-+U-BP@sZS2XdOAeK5wh|t>P)&8|Jv(s3f z^3)imIW?RJuNVqj55w6yG90DOXP8mtEy3*tKIn4JBzstO)A|B0&8ld-R<>`pYP(qH zLle!uc3V!6=BbE|R1}VD&GOb1(UfB0wMCX;oYs=rGwJD(X*W7HGwY^js%(~fK5=%u zaqD?dofW2BbnUeDD2@ur@arJ-G`0`IK*z8W#B*X<-cN3gsU;)FUl2u{FfN`W6J~5O z_Evj=h&K))=c(YhRvjNdH&Mk5OUo)PM;_J(J38)$S! zB&QNdg&5^5^bNt5;gonROsb4yLNTr$R735|6rG+LV+RHg9*JtOrp(~DJ`UPbV*ic& z{UO+}Su;&C7sErOV$}O`gU~Uwm{KhfR$Pnl+YpS_b>@|`E*gl@;gZ%8GkIpRinvKJ zL&9UKaE7^%n50a3hAlIh=2hJ4iB=df85s$YjA4bye`FvzLp^WnVicOl6fs1UPH|>Q zY?nkxai5|n31_B?S|ad*J{KY$$xy%V<9|~$eKgathzLU@Vp$ev=qPo>*q9)r3{ldN zI*xg5`5+QYDqE5K)`Dpn z^Y*Cy^^%}$!=eP<3L&hdQMx7CDoz#E+98s0%2hfShlNL^l+d1`Hb+744|BmOOX8i^ z^4KmeVZ|^Etcx+`F@Z7BA|6}9nujWeGoZt;IlMCrgB7HdVwhMeEwM(>@aHhl3P&=F zC!TplNv6FI{3vX!AfZ*fr$s!vlySnt=u!B4HFIe^&?ZZrW60?+bqp?7oKudmn9g|T p%6JEbCCA~7icSr&T3MOj;)G|7E63s6&c?};@DaeB058M(e*ncDN(cY| diff --git a/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_gpio.rs index a9ceda61..bc66bbcc 100644 --- a/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -49,33 +49,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index a0c0d593..35417674 100644 --- a/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/09_hw_debug_JTAG/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/10_privilege_level/Cargo.lock b/10_privilege_level/Cargo.lock index ce4a9f78..d214801d 100644 --- a/10_privilege_level/Cargo.lock +++ b/10_privilege_level/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/10_privilege_level/Cargo.toml b/10_privilege_level/Cargo.toml index cf0f0636..111fe74b 100644 --- a/10_privilege_level/Cargo.toml +++ b/10_privilege_level/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/10_privilege_level/kernel b/10_privilege_level/kernel index 54a7ced7c9e38424e6d8a5fb96e250b2f7e24d43..8a6625d84c3abde78179feddc2dc2fee7d4670ed 100755 GIT binary patch delta 2698 zcmbVOTW?iG6yB=^1q1YeKn05iA+Z%Wnfrxks7krt<)*=ux$U-rQf$k`XgtASL}L(M z95uf9WPC!SO-wYzcnJ^s!V3@n0H4qh!#6XstgQ{Qz0(W8 z+$jZOUP3k!6)EEPmWg}H_^LAAUdG?6)a_G{1DP?aNc@!*iRpFnx4Dd8E92c|{Pe8& z$J1~WevdD#hE6yi-&hS77oM6~u&m<+%d!%EX=b#2um*P2KkkEbKq?8>kl!_{z+G!A zfIpP0eNyH>Q08}Z)Zbj2>c*E#V7ic)@N^khXKB* z)mfmXh|*FP8dc zVUaWrMOuITr)@9*urcZ#(7)ix#N8-yN>2f6uJBR)(;XmT!L>PAHYbB@Zg(-$EcIlB zooUh2#pC^m)7ygOa|`gMt^(X!Dt#@Q#`JgPbe0v<`^xEQ@oZ!Iv!uAO)YnUj>Bq}v zxf;LP3C~PZ+>MG6p<~xBxbRT(ZG{^+QpMSUFnTB)tTvnhAMMIMvb+$(WaY|I98paklh$l{5z08bDfyZ-Zu8|8rZI8ySuF?1ru_iZM*M z*J-3m^4p2vE!VhZ<=DFidMlc+;4LOX5Y04I@ys4rS3%x+LxN#B!VFWXpH+BWoQ{^41X)gnv9k#SM~{#kgvy%MOEifb2WU_^%y7axF?73Bo+$||Q)H(~1P=bneR z+A35^Cy{c-V#S3MapQjI+AUJ&IVZXD-Vvti_sp>M`>U{ap*SV~6SJ;UTtm+xo3Zi?d!!W`uD`w$tto+@}mI?#ZdA(&dCY zl1y|rv?xTAg{h&mRunNN<7ES?!liLYd26|1GGG)Rv@lrXf^maTpft$jIO)sGp^-yX zilm|%Ni7i;X`tFAGG&a{Bsngss5FWxl*(m7Bs+v8RAT%u8E}K4mb|__1xuXPaGUIA zj2Y#)ZX5=m3mY6WO%W~JFE!ka0N08#{yzh`8-aHY%be2GyUufmNOBT+h6u)%`GO1ZyHF!ITi08irk3lbfEGPZ z3JG_nNDQ=WhFecf$zXgifv0ok(;1Oma6yw5Cf7BDtrq;oR$?isq+AQ31W7Hdh$tz% zWI_9M!P#6%rw9(ls*vh17?Ir4W;5W_o;rPfkkCx2R5ur8N48?9-9%At#ebu?iJ{z# zmJDO#qfL=FHf#Eg-Huapc%_mW(MXUW&5@pra#QI+nA*vB}eIN8<7U zI9bUR(>y4qn5CHd5GMwJR)}TkDw28N$+YxQitU5&a)m0EE*Pp+VA|k3#J30G-Ac|# n`fkvmDN^YgF?Bfvm)hgDCtyl_#xQ&U(?9Pl|0~4p%c1ixmb#YC delta 2670 zcmbVNOOI4V6uxH$1XP$F1Q9Yq3@iqaPQ4#$!UP$f1M&uqW~jRN*31NEz@8o;(b&QG z!l-~Tmd1_jbcH5DlNbXgE(nQ4)P);XB>n(bNQklS)NLi&qlCNYn|tazU!Cter>ZYq zpMLrJ^i#cX`S|j4%VBljqP>+QfsT&k!pfOR@r2LG=i^HA)js$THeG%&Njf?p**7Z! z=1q%$2j;{?MPhtLnK)3!SC{e5GXCzIrdoxvz)wEg%lOSQ-do1s@A9{v zh9hvxzql3_zw|85wbXG*#Y9vBPIO1Y+YiNf%dn+>`$o73H=5m>U8d;Pnm|T(~B17af|mJi=N#eAfJO2S`}>``jd%n?N$JH?Fj#zV2aH*z{z4 zed2NWTDWRn1P}B?a9>&J8{QPl-zGpXFSls$rl@3i*adIH9jpYZct*HNPH=u6I3DP_jMrlQr!~On`-LR~Y zBAQYxoVLg^jMM&qW=Bq(EIU>u#Sd){Ann6bpjk5b+*Xzzs`>l&K+jfYMaoHLcuECT zmP}CuZ@b68cJ_UHp|3)Tv{GgmNr!AkojQeY7@G&j;OT z9m`=&oF<5+xg zUXo~wm2IPHUE8oug1hzn*r2IuYmLY!YLlH5N&QfIV6c`Cjf~gx+IW@Kx#Ob~2b))) zg*Q99vW#JETyBh0gmJ&*06bY?Di6wXZ5>j~BH29q0=&~v$!*SAfM-rPDuS7t_e0Mf zC5Yq1vcf}djp;9XE#gdK9N&YZW@N1J+6hFQ$q~u}1IPW$h!uCe(s8Wd;X)=&hr~{s;G41|D0XnI>5triDnwsBA{L zj|NmF7{pXDddy}jnB*5(7;XgfRPZtA3RA=-?N7|up|L9BCdCX1hpECD=0akUGUXVy z%w(EZadb*DNrOEa%P^9JX^PNY5|BxPMs-RCni4LF6Go#{bDnF8UD(-5gR^i|=qidO zP)s#plw&F+r@ClFEa86%f`&%X?t5p5BBmzb98n`OA_Xxr3ksM~VX$#-RhEaNT5Xgf zu#i$}#RSC~aV{CtGOEx-ridY;bQ*M%FiR34#a)U*UvOqxHnf?+yC7&33}r9xjiDeY zZJ3h4W+u-vgh=kfrG~I!VYpW){^=6%+LDk*!XD< zUa26Z6vM<)X-T*>segP3Uh=btpsS1JDI(HjX`VBbYrk>`UaRD}${7nI5iWiiE=hlJ z2xx^PnT3muIYmjPo%0>T@NxwSt-@cCkVsO-3HR>}!$%dJ8e+AwviR2_JZp*(xYBw0 RhZ*Nb;ZuNf{>&IG`4j$%mE-^b diff --git a/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_gpio.rs index a9ceda61..bc66bbcc 100644 --- a/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -49,33 +49,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index a0c0d593..35417674 100644 --- a/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/10_privilege_level/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/11_virtual_memory/Cargo.lock b/11_virtual_memory/Cargo.lock index ce4a9f78..d214801d 100644 --- a/11_virtual_memory/Cargo.lock +++ b/11_virtual_memory/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/11_virtual_memory/Cargo.toml b/11_virtual_memory/Cargo.toml index cf0f0636..111fe74b 100644 --- a/11_virtual_memory/Cargo.toml +++ b/11_virtual_memory/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/11_virtual_memory/kernel b/11_virtual_memory/kernel index a9a29379b8eb789e2d1d97941b415686a6f0c81d..6335375dca80bec35deaec186a2eb72c1a8607ad 100755 GIT binary patch delta 3334 zcmbVNU5p)N8J_uy^z3FSbGlo$$Ch@xw6a^;@%#TVN+|Avt6(8&;DWfB?`OIjYB$|( zg?hn4Vu;ZgTtf0~6aPvuS}w4SF-LEd8ck?oqK#;f3lgJ75=pGy$i-gx&Y3xY-QAQh z7iV&w_j{lBdH=q-y4HGgt@W*mbndCipH8L^W$}e9#qr53-QRsROF7$eA#1H%x;0Kr zrCGWf%~bl)*qTarcAuO|Cw|pAbaRp*lqScAT1oZ1hI+5$v+>f6XteXGkt9hGN*+E^ zo8fQo`Fi{}nA6{O2eu-Wrr(T5TIk;NXgt>fbhUc@7hY!v0K5?YGJq7>*?8`Q04Pb5 z)vRXhk za=UPEP1`Ts?TxCd*Wh_Po1tgYC%Thuw48Q6(vSY>+8x(HlHbHj+d=$n{PTA7!*pBs zsbRD=?VJbps`FPrQ=hJXljMnbZUhG7MZl3i#vU5YEa06o(^zY85rI~RwOWIIgE-}ctd z&o$1&v3)Bjd3Z-{{`~m=3%wGLROT0NNs6|3{AJ5swCcH5WE zGZ&`gr7?7{ZJjTPDh$ys6iWCS){ce3NM14=2oAW|L^{7#Lp-|=iHtBKs5Oi!!z}kS zzOfG-a78FfDwt6PRh)aZG3UGb8~ME=ZCs!A;mdJE_F?Xn2}YE`K-Q*Q7byO09O2AR z9=s(~N@}=aIzDh4GJ6SrY;k@m%(}T^k*GQBoiAu8c!>!oOjd{P$%4_?VIu@5z7W(@ z=v}v*TBMLEG~t| zXN%mHr`f`pQ;+pd^JHnkJvzG>j?JH13X7+5i!B?JruSigE`ik31zg7C&$sw_{?E6aIj>aDOXbFz}>ojI-5GZei)5q zLKO~cZ!ILMV58z-j_%H|u~uUO`5R#!)cKJdeevefdm^A#C6=OqmR!!!+_I2d6c`7_ zf`V4j>7+QZa3W_+n}XYdOCO+O1s0~{0@PcrN=k5!>tYioBvyhEiLt7F6@8xsq(`uv zZ_ePIBdP=?PCG9grp6iUIi`eI;ay%cG?GF?1hxl?u)^qlDKKUh!Z&+$^@#%E4-d!s@^ZUl2@7%lZW%u(cc$ zEe$qG5KW}Q?}K5vqUbmBgHcorO&K;60hi}HBG-)yqAI>Tfy_bpa8ZG+42)RnO3`0g zO|ZdAN~K|?Fy zN_#GZwehGxETa}y4lactU{c_t7oQdA2W_~Ot>8hBqJ*weGaX+N=qo$<{E7J`xFAc- kjR=}+ZXvo4-Pa}h(}z}me`EK;$I0H&S{zW@LL delta 3369 zcmbtWTWnoN6+LGX8rw?4ao(4>iSrV69*2295S0knM23{M3Xce(S~KU&Mjb?j33 zxouSe5|JQM=_G29nyM9wXiNK1-F`#@_p6mEPz6-<2gE}ViAps;(2snu&pqd+A+ehX z=Hp)7wP&wcd(WDgd*y21($&5njijd@8+~;&{dyK(&eA>c(JaNC-)1RiacV5x8i(N{ zy&TP0`l(gVWqoHCH+3EzOGjRB;g2T?LTNIywlAs1?@{+FITjc1KwDZzHzrAnP;%^0 z9fqIX@l^aLgwuCB{cDg))2HL1K6E%e8ZY(%dZGIIclumB-w)vB_@{oP$et#1CoF)H zGyxS|WNU+ev%xR-@HjDmc1%2VXDwjq^Y!#|&Gh;8H9png`y2e#20z!}!wvqo_{soC zTj;zwfR3l>?;=@?woI&BSFx;uIsM&v^%_a?kE~|@{#cE`wC*@CSmWm!e5Ao=<5{3f zU+i33i+-L?{2k_3O?_gpPT#n?p7&Cdex*rY)1)so`1=iB391I|TwDiy>HG2i3~eFD z8&xkKu4#L%yVT%IH{d#+&(IIk$2+5gsGYX{)wJfy7wdFfFOvKwF0Kdhv+>>a=%?vW z=dlfFP1@=Jd$sdRU#e%f|SzIFS)#0z~`fs6sjEAc5YnziK1IP8YxJgbH<3kXhNTAFtsrCnqcHJ1b zh7VkaCdp>ND=|l!N_q$4f%tZ{+Ivm-My*F;x*bY-q5fJI3H)juh8|X27xvc5k2EXE zXsfUvs>5$IOZCG0;@R!!XrGvWc$UtIsm^=bQI=-h$wJW5ih@a|9gS;;(NNn2iD|GN zV;`6lWITD$&z4y;--$%#1jR-a(rTlb z4kZ3zC)!&Sm=%o3U>tUwkYahx5A`?lyG>fYKQ}KQb|JE}4A}F+mCAS%D5Ezm6kpqg zaK@-|N|gkwfL+N#yl*!$I|%;P-1NMkET-%nQB&H5!dfRJ5n7a#SChVw85#`5yzq)r zX^gGV&u%_FUu6Vlp>DyfpfYHVHaZEpnHgxXXi=JJTl_e*} z25)W9lnWVuF@ipwaqU5)H!fh!9aizzqi9QKcoe;XGVi?LkW>Z z<5f?Dvo`KIfOhYb#1S4iWx<(XMLC|&%sf1sbF73Rm>8xRrv@yBA?t8 zY0g5pRnj{L(QpP0kXeeIE(Rds7K*M%Glfhd;vGK&7IC&z+!WM*M83@y)Btj}e3$6nvj@#0RoYdPu zlrmCc0R=)|4Wm@h+hm{>Lwh#=2nsj?giu;&uPo?L6hpZdWGV23&^cbw3yp?b5s>!( z%h0W2Sv%GeSV4uNL0W?gBZN1M1n8ermXvUTwN0-G0w!V1z+|Y5a;mY`w?$#D?ZyAV z(C(@*c~i#9B2?i$+=4<#tR2I?bOjf|X=dR11NZdG(40sqIhBG@V~93})m1D{(7ukL zvDAtT1@#*2=L%M8N-Vd$#9#=|6ub&rmOTk@7sH`biZaZk0l`?}1g_O<@#{R>*E4PW zGl%Jxo|(c@XS7q*qeMj+DM!;8mPW(7 zCKXnU3o7EzIQnh|)`VT6jwwgs(O~hAKr9njmGEDM2hC_{LWoZY^!y, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/11_virtual_memory/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/11_virtual_memory/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index a0c0d593..35417674 100644 --- a/11_virtual_memory/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/11_virtual_memory/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part. diff --git a/X1_JTAG_boot/Cargo.lock b/X1_JTAG_boot/Cargo.lock index ce4a9f78..d214801d 100644 --- a/X1_JTAG_boot/Cargo.lock +++ b/X1_JTAG_boot/Cargo.lock @@ -2,19 +2,19 @@ # It is not intended for manual editing. [[package]] name = "cortex-a" -version = "2.7.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "kernel" version = "0.1.0" dependencies = [ - "cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -24,19 +24,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "register" -version = "0.3.3" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "tock-registers" -version = "0.3.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum cortex-a 2.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "407097a93c797547dd02da52c2afd45294173438675998d951056154f341c942" +"checksum cortex-a 2.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7ba44745549e86ee77de685cb4b675301ee3aac10dee37307f02adcbbef9b4" "checksum r0 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e2a38df5b15c8d5c7e8654189744d8e396bddc18ad48041a500ce52d6948941f" -"checksum register 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "469bb5ddde81d67fb8bba4e14d77689b8166cfd077abe7530591cefe29d05823" -"checksum tock-registers 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c758f5195a2e0df9d9fecf6f506506b2766ff74cf64db1e995c87e2761a5c3e2" +"checksum register 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "274b546ad3fae94f529e36b1745b74a7b2f23dd34542260f721be1320761e7fc" +"checksum tock-registers 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50af9c49c55cfb4437dd78c1fada3be5d088cbe1bea641db8171283503606a70" diff --git a/X1_JTAG_boot/Cargo.toml b/X1_JTAG_boot/Cargo.toml index cf0f0636..111fe74b 100644 --- a/X1_JTAG_boot/Cargo.toml +++ b/X1_JTAG_boot/Cargo.toml @@ -17,5 +17,5 @@ bsp_rpi4 = ["cortex-a", "register"] r0 = "0.2.*" # Optional dependencies -cortex-a = { version = "2.*", optional = true } -register = { version = "0.3.*", optional = true } +cortex-a = { version = "2.8.x", optional = true } +register = { version = "0.4.x", optional = true } diff --git a/X1_JTAG_boot/Makefile b/X1_JTAG_boot/Makefile index 0595ebb7..82355dcb 100644 --- a/X1_JTAG_boot/Makefile +++ b/X1_JTAG_boot/Makefile @@ -59,8 +59,7 @@ DOCKER_EXEC_RASPBOOT_DEV = /dev/ttyUSB0 all: clean $(OUTPUT) $(CARGO_OUTPUT): $(SOURCES) - # RUSTFLAGS="$(RUSTFLAGS_PEDANTIC)" - $(XRUSTC_CMD) + RUSTFLAGS="$(RUSTFLAGS)" $(XRUSTC_CMD) $(OUTPUT): $(CARGO_OUTPUT) cp $< . diff --git a/X1_JTAG_boot/jtag_boot_rpi3.img b/X1_JTAG_boot/jtag_boot_rpi3.img index a112e6bb9bd5d357bfe417dc6d9b7acd20e9f471..a66e8d9fd90b53ffc8cbb953319c0959997d2937 100755 GIT binary patch delta 130 zcmaFi`oeX>M#hU9H<>drHg0~!^o>P|L&ag`BWA``512VtJ!Ixw<-)=s!ocA0Gn8@i zFZO1>my<3j%-`^7LB{n@4Xm#=cXQ;5F^Ww7DW}dTu~|_*kdevIcyfutSqNo4xlU1v fwT6*_L3FaMf+M#jdCo6MOQ7jAyV^o>P|fx+Qt6eEKOhl<0>N6d_?9x!vPddSSV%86z2 zFZO0Wj_ykgGj@GqcysTQL+Q88-5j}Mj1rT7%BeGoY*v&HWMnchom`@D7D8E1u2Ym^ ftzu+g5S?tRUoUmIda7qMJE50Q)iUetSBGI$Yf|dxkTYC mgtDGorzpi*!^prOI@wmi6eM^>F@`a0vZ0bVW71?#rTG93%N}6> delta 87 zcmaFi`oeWXEe9V*_a%lIyFM|zx%bJT^xNicj$AQDiOE0Z)EPxKE6N8lG8vdoE>SoO mp{ys@DN3X+8kQksW{l diff --git a/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_gpio.rs b/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_gpio.rs index f6ef27b8..376a1318 100644 --- a/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_gpio.rs +++ b/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_gpio.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::ops; -use register::{mmio::ReadWrite, register_bitfields}; +use register::{mmio::ReadWrite, register_bitfields, register_structs}; // GPIO registers. // @@ -129,33 +129,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - pub GPFSEL0: ReadWrite, // 0x00 - pub GPFSEL1: ReadWrite, // 0x04 - pub GPFSEL2: ReadWrite, // 0x08 - pub GPFSEL3: ReadWrite, // 0x0C - pub GPFSEL4: ReadWrite, // 0x10 - pub GPFSEL5: ReadWrite, // 0x14 - __reserved_0: u32, // 0x18 - GPSET0: ReadWrite, // 0x1C - GPSET1: ReadWrite, // 0x20 - __reserved_1: u32, // - GPCLR0: ReadWrite, // 0x28 - __reserved_2: [u32; 2], // - GPLEV0: ReadWrite, // 0x34 - GPLEV1: ReadWrite, // 0x38 - __reserved_3: u32, // - GPEDS0: ReadWrite, // 0x40 - GPEDS1: ReadWrite, // 0x44 - __reserved_4: [u32; 7], // - GPHEN0: ReadWrite, // 0x64 - GPHEN1: ReadWrite, // 0x68 - __reserved_5: [u32; 10], // - pub GPPUD: ReadWrite, // 0x94 - pub GPPUDCLK0: ReadWrite, // 0x98 - pub GPPUDCLK1: ReadWrite, // 0x9C +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => GPFSEL0: ReadWrite), + (0x04 => GPFSEL1: ReadWrite), + (0x08 => GPFSEL2: ReadWrite), + (0x0C => GPFSEL3: ReadWrite), + (0x10 => GPFSEL4: ReadWrite), + (0x14 => GPFSEL5: ReadWrite), + (0x18 => _reserved1), + (0x94 => GPPUD: ReadWrite), + (0x98 => GPPUDCLK0: ReadWrite), + (0x9C => GPPUDCLK1: ReadWrite), + (0xA0 => @END), + } } /// The driver's private data. diff --git a/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs b/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs index 78303c49..7647492d 100644 --- a/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs +++ b/X1_JTAG_boot/src/bsp/driver/bcm/bcm2xxx_pl011_uart.rs @@ -6,7 +6,7 @@ use crate::{arch, arch::sync::NullLock, interface}; use core::{fmt, ops}; -use register::{mmio::*, register_bitfields}; +use register::{mmio::*, register_bitfields, register_structs}; // PL011 UART registers. // @@ -109,19 +109,21 @@ register_bitfields! { ] } -#[allow(non_snake_case)] -#[repr(C)] -pub struct RegisterBlock { - DR: ReadWrite, // 0x00 - __reserved_0: [u32; 5], // 0x04 - FR: ReadOnly, // 0x18 - __reserved_1: [u32; 2], // 0x1c - IBRD: WriteOnly, // 0x24 - FBRD: WriteOnly, // 0x28 - LCRH: WriteOnly, // 0x2C - CR: WriteOnly, // 0x30 - __reserved_2: [u32; 4], // 0x34 - ICR: WriteOnly, // 0x44 +register_structs! { + #[allow(non_snake_case)] + RegisterBlock { + (0x00 => DR: ReadWrite), + (0x04 => _reserved1), + (0x18 => FR: ReadOnly), + (0x1c => _reserved2), + (0x24 => IBRD: WriteOnly), + (0x28 => FBRD: WriteOnly), + (0x2c => LCRH: WriteOnly), + (0x30 => CR: WriteOnly), + (0x34 => _reserved3), + (0x44 => ICR: WriteOnly), + (0x48 => @END), + } } /// The driver's mutex protected part.