Compare commits

...

269 Commits

Author SHA1 Message Date
Philipp Oppermann
2a0126b9d2 Merge branch 'post-06' into post-07 2025-02-10 12:36:07 +01:00
Philipp Oppermann
90d1551665 Merge branch 'post-05' into post-06 2025-02-10 12:36:07 +01:00
Philipp Oppermann
45c058c622 Merge branch 'post-04' into post-05 2025-02-10 12:36:07 +01:00
Philipp Oppermann
deb7c82872 Merge branch 'post-03' into post-04 2025-02-10 12:36:07 +01:00
Philipp Oppermann
2a61f88d8a Merge branch 'post-02' into post-03 2025-02-10 12:35:54 +01:00
Philipp Oppermann
a90a8bea67 Run cargo update for bootloader crate 2025-02-10 12:35:16 +01:00
Philipp Oppermann
0422be52fa Merge branch 'post-06' into post-07 2025-02-10 11:16:21 +01:00
Philipp Oppermann
e9f9035f89 Merge branch 'post-05' into post-06 2025-02-10 11:16:21 +01:00
Philipp Oppermann
1d87e3b699 Merge branch 'post-04' into post-05 2025-02-10 11:16:21 +01:00
Philipp Oppermann
fda382c6bc Merge branch 'post-03' into post-04 2025-02-10 11:16:21 +01:00
Philipp Oppermann
f52872f3b9 Merge branch 'post-02' into post-03 2025-02-10 11:16:21 +01:00
Philipp Oppermann
688a21e4ed Set rustc-abi: x86-softfloat in target JSON
This additional field is required by the Rust compiler since https://github.com/rust-lang/rust/pull/136146 .
2025-02-10 11:16:14 +01:00
Philipp Oppermann
8d067be8ac Merge branch 'post-06' into post-07 2025-01-15 19:58:30 +01:00
Philipp Oppermann
aa9d0fff74 Code: Use new &raw const operator instead of unsafe {& _} 2025-01-15 19:58:23 +01:00
Philipp Oppermann
1edd07c3fd Update to pc_keyboard v0.7.0 2024-05-30 10:59:39 +02:00
Philipp Oppermann
6854937268 Merge branch 'post-04' into post-05 2024-04-30 15:39:16 +02:00
Philipp Oppermann
75354fe142 Merge branch 'post-03' into post-04 2024-04-30 15:39:16 +02:00
Philipp Oppermann
61fc3c65bc Merge branch 'post-05' into post-06 2024-04-30 15:39:16 +02:00
Philipp Oppermann
7a0597192c Merge branch 'post-06' into post-07 2024-04-30 15:39:16 +02:00
Philipp Oppermann
07d6c9c84e Merge branch 'post-02' into post-03 2024-04-30 15:39:07 +02:00
Philipp Oppermann
2265ddecad Run cargo update 2024-04-30 15:37:30 +02:00
Philipp Oppermann
a44ac64c10 Merge branch 'post-04' into post-05 2024-02-16 15:59:40 +01:00
Philipp Oppermann
9edc2c59c7 Merge branch 'post-03' into post-04 2024-02-16 15:59:40 +01:00
Philipp Oppermann
27888e99b5 Merge branch 'post-05' into post-06 2024-02-16 15:59:40 +01:00
Philipp Oppermann
0b51e0a320 Merge branch 'post-06' into post-07 2024-02-16 15:59:40 +01:00
Philipp Oppermann
3bc023ec2d Merge branch 'post-02' into post-03 2024-02-16 15:59:38 +01:00
Philipp Oppermann
38604da92f Update bootloader version to v0.9.27 in Cargo.lock 2024-02-16 15:59:13 +01:00
Philipp Oppermann
defd01c032 Merge branch 'post-04' into post-05 2024-02-16 13:22:06 +01:00
Philipp Oppermann
6e7c2f4344 Merge branch 'post-03' into post-04 2024-02-16 13:22:06 +01:00
Philipp Oppermann
26222f866f Merge branch 'post-05' into post-06 2024-02-16 13:22:06 +01:00
Philipp Oppermann
bd12d5b8e1 Merge branch 'post-06' into post-07 2024-02-16 13:22:06 +01:00
Philipp Oppermann
1a53a115da Merge branch 'post-02' into post-03 2024-02-16 13:21:45 +01:00
Philipp Oppermann
c6990cb52d Don't specify patch version in Cargo.toml
Avoids confusion for people that don't know that cargo always chooses the latest patch version.
2024-02-16 13:21:21 +01:00
Philipp Oppermann
45a8a03449 Merge branch 'post-04' into post-05 2024-02-16 13:14:09 +01:00
Philipp Oppermann
3916bebd15 Merge branch 'post-03' into post-04 2024-02-16 13:14:09 +01:00
Philipp Oppermann
d61a13bbad Merge branch 'post-05' into post-06 2024-02-16 13:14:09 +01:00
Philipp Oppermann
d830e5db29 Merge branch 'post-06' into post-07 2024-02-16 13:14:09 +01:00
Philipp Oppermann
ef9bb1a087 Merge branch 'post-02' into post-03 2024-02-16 13:13:55 +01:00
Philipp Oppermann
2bc4490404 Update bootloader version to v0.9.26 in Cargo.lock 2024-02-16 13:13:31 +01:00
Philipp Oppermann
5cb7baa983 Merge branch 'post-04' into post-05 2024-02-16 12:39:56 +01:00
Philipp Oppermann
f45954e7e4 Merge branch 'post-03' into post-04 2024-02-16 12:39:56 +01:00
Philipp Oppermann
8b7d009ba5 Merge branch 'post-05' into post-06 2024-02-16 12:39:56 +01:00
Philipp Oppermann
6b7bb6f7a8 Merge branch 'post-06' into post-07 2024-02-16 12:39:56 +01:00
Philipp Oppermann
7288459bdf Merge branch 'post-02' into post-03 2024-02-16 12:39:51 +01:00
Philipp Oppermann
7959b77ebd Update data layout for LLVM 18
Fixes build on latest rustc nightly.
2024-02-16 12:38:32 +01:00
Philipp Oppermann
bebad6d5a9 Update bootloader version in Cargo.lock 2024-02-16 12:36:31 +01:00
Philipp Oppermann
67c3180a7f Merge branch 'post-04' into post-05 2024-01-28 11:45:38 +01:00
Philipp Oppermann
c73b412ec6 Merge branch 'post-03' into post-04 2024-01-28 11:45:38 +01:00
Philipp Oppermann
431a956388 Merge branch 'post-05' into post-06 2024-01-28 11:45:38 +01:00
Philipp Oppermann
4877991587 Merge branch 'post-06' into post-07 2024-01-28 11:45:38 +01:00
Philipp Oppermann
6c8fea8b00 Merge branch 'post-02' into post-03 2024-01-28 11:45:32 +01:00
Philipp Oppermann
b99c3f6d1d Use latest data layout for custom target 2024-01-28 11:44:35 +01:00
Philipp Oppermann
66c1792034 Update bootloader version in Cargo.lock 2024-01-28 11:44:23 +01:00
Philipp Oppermann
3adc1cc476 Merge branch 'post-04' into post-05 2022-09-25 11:32:07 +02:00
Philipp Oppermann
445833408c Merge branch 'post-03' into post-04 2022-09-25 11:32:07 +02:00
Philipp Oppermann
698ccaf6d7 Merge branch 'post-05' into post-06 2022-09-25 11:32:07 +02:00
Philipp Oppermann
929739932f Merge branch 'post-06' into post-07 2022-09-25 11:32:07 +02:00
Philipp Oppermann
3280a0afc7 Merge branch 'post-02' into post-03 2022-09-25 11:31:07 +02:00
Philipp Oppermann
6393247a3b Update bootloader version in Cargo.lock 2022-09-25 11:29:38 +02:00
Philipp Oppermann
511686c054 Merge branch 'post-06' into post-07 2022-04-08 10:07:31 +02:00
ruhuang
b72c457481 Update post-06 to set CS register with non-deprecated function (#1099)
Set CS register with non-deprecated function
2022-04-08 10:05:21 +02:00
Philipp Oppermann
e85f81b828 Merge branch 'post-04' into post-05 2022-01-18 10:06:44 +01:00
Philipp Oppermann
8622b9c41b Merge branch 'post-03' into post-04 2022-01-18 10:06:44 +01:00
Philipp Oppermann
ec967eeecb Merge branch 'post-06' into post-07 2022-01-18 10:06:44 +01:00
Philipp Oppermann
4a684a06b1 Merge branch 'post-05' into post-06 2022-01-18 10:06:44 +01:00
Philipp Oppermann
a387a00c85 Merge branch 'post-02' into post-03
# Conflicts:
#	Cargo.lock
2022-01-18 10:06:27 +01:00
Philipp Oppermann
faa8d15cb7 Run cargo update for bootloader crate 2022-01-18 10:05:56 +01:00
Philipp Oppermann
31b6cf52c6 Merge branch 'post-04' into post-05 2021-12-22 09:27:53 +01:00
Philipp Oppermann
736a4183db Merge branch 'post-03' into post-04 2021-12-22 09:27:53 +01:00
Philipp Oppermann
007f32cd57 Merge branch 'post-06' into post-07 2021-12-22 09:27:53 +01:00
Philipp Oppermann
a9d6066fb7 Merge branch 'post-05' into post-06 2021-12-22 09:27:53 +01:00
Philipp Oppermann
4c9cd3ae32 Merge branch 'post-02' into post-03 2021-12-22 09:27:26 +01:00
Philipp Oppermann
26f1f5b896 Run cargo update for bootloader crate 2021-12-22 09:27:00 +01:00
Philipp Oppermann
688e9680aa Merge branch 'post-04' into post-05 2021-12-21 13:56:10 +01:00
Philipp Oppermann
72ae0fd857 Merge branch 'post-06' into post-07 2021-12-21 13:56:10 +01:00
Philipp Oppermann
8b6a53973b Merge branch 'post-05' into post-06 2021-12-21 13:56:10 +01:00
Philipp Oppermann
c2dd2477ab Run cargo update for bootloader and x86_64 crates 2021-12-21 12:43:22 +01:00
Philipp Oppermann
624579b494 Merge branch 'post-04' into post-05 2021-08-22 14:44:44 +02:00
Philipp Oppermann
3f54394eab Merge branch 'post-06' into post-07 2021-08-22 14:44:44 +02:00
Philipp Oppermann
f0ed4260e1 Merge branch 'post-05' into post-06 2021-08-22 14:44:44 +02:00
Philipp Oppermann
9d16f0a139 CI: Use choco to install QEMU 6.0.0
This should fix our CI build errors. We install a pinned version of QEMU since the latest 6.1 pre-releases appear to have some problems too.
2021-08-22 14:36:17 +02:00
Philipp Oppermann
b74740aeb9 Merge branch 'post-06' into post-07
# Conflicts:
#	README.md
2021-05-21 19:56:29 +02:00
Philipp Oppermann
6c97986b38 Merge branch 'post-05' into post-06 2021-05-21 19:56:04 +02:00
Philipp Oppermann
0ee96f8178 Merge branch 'post-04' into post-05 2021-05-21 19:55:41 +02:00
Philipp Oppermann
a671ad3dbc Merge branch 'post-03' into post-04 2021-05-21 19:54:47 +02:00
Philipp Oppermann
cbead25b43 Merge branch 'post-02' into post-03 2021-05-21 19:54:20 +02:00
Philipp Oppermann
1f49e2e9fe Merge branch 'post-01' into post-02 2021-05-21 19:53:49 +02:00
Philipp Oppermann
8708b54756 Readme: Update workflow name in badge 2021-05-21 19:53:01 +02:00
Philipp Oppermann
f3e93c399f Merge branch 'post-06' into post-07 2021-05-20 14:33:10 +02:00
Philipp Oppermann
1990d09e80 Merge branch 'post-05' into post-06 2021-05-20 14:33:10 +02:00
Philipp Oppermann
a78e4b36f1 Merge branch 'post-04' into post-05 2021-05-20 14:33:10 +02:00
Philipp Oppermann
765c7b21e9 Merge branch 'post-03' into post-04 2021-05-20 14:33:10 +02:00
Philipp Oppermann
2c25d55810 Merge branch 'post-02' into post-03 2021-05-20 14:32:42 +02:00
Philipp Oppermann
021762cf30 Run cargo update for bootloader 2021-05-20 14:32:27 +02:00
Philipp Oppermann
26ee93c81a Merge branch 'post-07-switch-pic-crate' into post-07 2021-05-17 12:43:49 +02:00
Philipp Oppermann
75abc110d4 Adjust post-07 to take InterruptStackFrame by value 2021-05-17 12:40:11 +02:00
Philipp Oppermann
3aa979ebe0 Switch to forked pic8259 crate to fix nightly build error 2021-05-17 12:39:57 +02:00
Philipp Oppermann
ad4b2a2e64 Merge branch 'post-06' into post-07 2021-05-17 11:47:14 +02:00
Philipp Oppermann
d55fa1ee24 Adjust post-06 to take InterruptStackFrame by value 2021-05-17 11:46:24 +02:00
Philipp Oppermann
1e22d287e3 Merge branch 'post-06' into post-07 2021-05-17 11:44:50 +02:00
Philipp Oppermann
5ae0f13fa4 Merge branch 'post-05' into post-06 2021-05-17 11:44:50 +02:00
Philipp Oppermann
4804317b24 Take InterruptStackFrame by value as required by x86_64 v0.14 2021-05-17 11:43:22 +02:00
Philipp Oppermann
62fe2321cd Merge branch 'post-06' into post-07 2021-05-17 11:41:30 +02:00
Philipp Oppermann
91f75922ca Merge branch 'post-05' into post-06 2021-05-17 11:41:30 +02:00
Philipp Oppermann
d3cb8115c5 Merge branch 'post-04' into post-05 2021-05-17 11:41:30 +02:00
Philipp Oppermann
eb2f818194 Merge branch 'post-04-update-x86_64' into post-04 2021-05-17 11:41:19 +02:00
Philipp Oppermann
167ef5bb83 Update x86_64 dependency to v0.14.2 to fix nightly breakage 2021-05-17 11:38:51 +02:00
Philipp Oppermann
ab5f8a8516 Merge branch 'post-06' into post-07 2021-05-17 11:30:02 +02:00
Philipp Oppermann
a7943b8d05 Merge branch 'post-05' into post-06 2021-05-17 11:30:02 +02:00
Philipp Oppermann
85fe11c95c Merge branch 'post-04' into post-05 2021-05-17 11:30:02 +02:00
Philipp Oppermann
4f68f9ba93 Run cargo update for uart_16550 crate 2021-05-17 11:30:00 +02:00
Philipp Oppermann
c7ea97cbde Merge branch 'post-06' into post-07 2021-05-17 11:29:23 +02:00
Philipp Oppermann
69c22017ce Merge branch 'post-05' into post-06 2021-05-17 11:29:23 +02:00
Philipp Oppermann
e48031e8bf Merge branch 'post-04' into post-05 2021-05-17 11:29:23 +02:00
Philipp Oppermann
36e4dc22f3 Merge branch 'post-03' into post-04 2021-05-17 11:29:23 +02:00
Philipp Oppermann
ec95ac0e5a Merge branch 'post-02' into post-03 2021-05-17 11:29:14 +02:00
Philipp Oppermann
d8f280315f Run cargo update for bootloader crate 2021-05-17 11:28:54 +02:00
Philipp Oppermann
28cca0f4e3 Merge branch 'post-06' into post-07 2021-03-10 09:23:02 +01:00
Philipp Oppermann
9bc237ac70 Merge branch 'post-05' into post-06 2021-03-10 09:23:02 +01:00
Philipp Oppermann
489d337cec Merge branch 'post-04' into post-05 2021-03-10 09:23:02 +01:00
Philipp Oppermann
0e365109be Merge branch 'post-03' into post-04 2021-03-10 09:23:02 +01:00
Philipp Oppermann
e39c7d8ad8 Merge branch 'post-02' into post-03 2021-03-10 09:23:02 +01:00
Philipp Oppermann
066c278277 Merge branch 'post-01' into post-02 2021-03-10 09:23:02 +01:00
Philipp Oppermann
bdb6a424a8 CI: Rename 'Build Code' workflow to 'Code' 2021-03-10 09:22:57 +01:00
Philipp Oppermann
3caf517bfd Merge branch 'post-06' into post-07 2021-03-10 09:15:58 +01:00
Philipp Oppermann
4815290f89 Merge branch 'post-05' into post-06 2021-03-10 09:15:58 +01:00
Philipp Oppermann
163cadf121 Merge branch 'post-04' into post-05 2021-03-10 09:15:58 +01:00
Philipp Oppermann
c8f72adeb3 Merge branch 'post-03' into post-04 2021-03-10 09:15:58 +01:00
Philipp Oppermann
f40717901b Merge branch 'post-02' into post-03 2021-03-10 09:15:58 +01:00
Philipp Oppermann
96844f6519 Merge branch 'post-01' into post-02 2021-03-10 09:15:58 +01:00
Philipp Oppermann
1501669819 Update lockfile format 2021-03-10 09:15:54 +01:00
Philipp Oppermann
5b9affa696 Merge branch 'post-06' into post-07 2021-03-10 09:13:39 +01:00
Philipp Oppermann
79a05fb802 Merge branch 'post-05' into post-06 2021-03-10 09:13:39 +01:00
Philipp Oppermann
009356771a Merge branch 'post-04' into post-05 2021-03-10 09:13:39 +01:00
Philipp Oppermann
cc617ec35e Merge branch 'post-03' into post-04 2021-03-10 09:13:39 +01:00
Philipp Oppermann
195f4489e6 Merge branch 'post-02' into post-03 2021-03-10 09:13:39 +01:00
Philipp Oppermann
1b86d7fd62 Merge branch 'post-01' into post-02 2021-03-10 09:13:39 +01:00
Philipp Oppermann
deb0f63dff Ci: Don't fail fast 2021-03-10 09:13:00 +01:00
Philipp Oppermann
971fcb4470 Merge branch 'post-06' into post-07 2021-03-10 08:53:42 +01:00
Philipp Oppermann
b74317b35a Merge branch 'post-05' into post-06 2021-03-10 08:53:42 +01:00
Philipp Oppermann
f1f358a684 Merge branch 'post-04' into post-05 2021-03-10 08:53:42 +01:00
Philipp Oppermann
bee9a7f7ea Merge branch 'post-03' into post-04 2021-03-10 08:53:42 +01:00
Philipp Oppermann
fbdcd45d16 Merge branch 'post-02' into post-03 2021-03-10 08:53:37 +01:00
Philipp Oppermann
d658949f5b Run cargo update for bootloader crate 2021-03-10 08:53:21 +01:00
Philipp Oppermann
4e22effcde Merge branch 'post-06' into post-07 2021-02-02 11:06:38 +01:00
Philipp Oppermann
4f9ec9427c Merge branch 'post-05' into post-06 2021-02-02 11:06:37 +01:00
Philipp Oppermann
67d9426fc7 Merge branch 'post-04' into post-05 2021-02-02 11:06:37 +01:00
Philipp Oppermann
4c07101f8f Merge pull request #919 from phil-opp/post-04-update-x86_64
Update x86_64 dependency to v0.13.2 to fix nightly breakage
2021-02-02 11:06:15 +01:00
Philipp Oppermann
30be97d035 Update x86_64 dependency to v0.13.2 to fix nightly breakage
Also: Run cargo update for uart_16550 dependency.
2021-02-02 10:54:08 +01:00
Philipp Oppermann
9326f80114 Merge branch 'post-06' into post-07 2021-02-02 10:52:06 +01:00
Philipp Oppermann
01701384f0 Merge branch 'post-05' into post-06 2021-02-02 10:52:06 +01:00
Philipp Oppermann
eb85142b45 Merge branch 'post-04' into post-05 2021-02-02 10:52:06 +01:00
Philipp Oppermann
63d0d8cc9f Merge branch 'post-03' into post-04 2021-02-02 10:52:06 +01:00
Philipp Oppermann
d12842bcd5 Merge branch 'post-02' into post-03 2021-02-02 10:52:00 +01:00
Philipp Oppermann
0e52ccbebb Run cargo update for bootloader crate 2021-02-02 10:51:03 +01:00
Philipp Oppermann
38c937c9b3 Merge branch 'post-06' into post-07 2020-11-22 13:46:58 +01:00
Philipp Oppermann
ab691c47d7 Merge branch 'post-05' into post-06 2020-11-22 13:46:58 +01:00
Philipp Oppermann
2b739350a8 Merge branch 'post-04' into post-05 2020-11-22 13:46:57 +01:00
Philipp Oppermann
4de18a8a10 CI: Use environment files instead of deprecated set-env 2020-11-22 13:27:41 +01:00
Philipp Oppermann
4cfb94cf18 Merge branch 'post-06' into post-07 2020-10-02 23:35:40 +02:00
Philipp Oppermann
31c0412d0d Merge branch 'post-05' into post-06 2020-10-02 23:35:26 +02:00
Philipp Oppermann
d26b91121c Merge branch 'post-04' into post-05 2020-10-02 23:35:26 +02:00
Philipp Oppermann
3fac6af7b0 Merge branch 'post-03' into post-04 2020-10-02 23:35:18 +02:00
Philipp Oppermann
d4e1f47e62 Update post-04 to use compiler_builtins mem feature instead of rlibc (#868)
* Remove rlibc and use compiler-builtins-mem feature (#865)

* Update post-04 to use compiler_builtins `mem` feature instead of `rlibc`

Co-authored-by: Rob Gries <robert.w.gries@gmail.com>
2020-10-02 23:28:03 +02:00
Philipp Oppermann
ea5aad0e0c Merge branch 'post-02' into post-03 2020-10-02 23:17:08 +02:00
Rob Gries
4e38e7ddf8 Remove rlibc and use compiler-builtins-mem feature (#865) 2020-10-02 23:14:25 +02:00
Philipp Oppermann
a76e65a326 Merge branch 'post-06' into post-07 2020-09-29 12:22:06 +02:00
Philipp Oppermann
f7198d2b00 Merge branch 'post-05' into post-06 2020-09-29 12:22:06 +02:00
Philipp Oppermann
3230ab7538 Merge branch 'post-04' into post-05 2020-09-29 12:22:06 +02:00
Philipp Oppermann
4215162b62 cargo update the x86_64 and uart_16550 crates to fix nightly breakage 2020-09-29 12:21:59 +02:00
Philipp Oppermann
1afa3af79d Merge branch 'post-02' into post-03 2020-09-29 12:19:54 +02:00
Philipp Oppermann
a233b79462 Merge branch 'post-06' into post-07 2020-09-29 12:19:54 +02:00
Philipp Oppermann
de8d1cb632 Merge branch 'post-05' into post-06 2020-09-29 12:19:54 +02:00
Philipp Oppermann
7e3ef2075d Merge branch 'post-04' into post-05 2020-09-29 12:19:54 +02:00
Philipp Oppermann
35c642b3c2 Merge branch 'post-03' into post-04 2020-09-29 12:19:54 +02:00
Philipp Oppermann
49dce7ada7 cargo update the bootloadercrate to fix nightly breakage 2020-09-29 12:19:48 +02:00
Philipp Oppermann
c2b284c2f2 Merge branch 'post-06' into post-07 2020-09-24 10:27:44 +02:00
Philipp Oppermann
b471610fa3 Merge branch 'post-05' into post-06 2020-09-24 10:27:12 +02:00
Philipp Oppermann
da14329fb2 Merge branch 'post-04' into post-05 2020-09-24 10:26:41 +02:00
Philipp Oppermann
3d96415940 Update x86_64 to v0.12.1 (#858) 2020-09-24 10:26:04 +02:00
Philipp Oppermann
fd8a2e0182 Merge branch 'post-03' into post-04 2020-09-24 10:10:51 +02:00
Philipp Oppermann
552eb97f75 Merge branch 'post-02' into post-03 2020-09-24 10:10:16 +02:00
Philipp Oppermann
c42cee8d89 Update bootloader to 0.9.10 2020-09-24 10:09:57 +02:00
Philipp Oppermann
f264928602 Run cargo update for post-07 2020-09-24 09:10:02 +02:00
Philipp Oppermann
8f3fb45625 Merge branch 'post-06' into post-07 2020-09-24 09:09:51 +02:00
Philipp Oppermann
9a7d089cf7 Merge branch 'post-05' into post-06 2020-09-24 09:09:39 +02:00
Philipp Oppermann
d8ba61748f Merge branch 'post-04' into post-05 2020-09-24 09:09:22 +02:00
Philipp Oppermann
3bb076a00f Run cargo update for post-04 2020-09-24 09:09:13 +02:00
Philipp Oppermann
e5bd06edcc Merge branch 'post-03' into post-04 2020-09-24 09:08:54 +02:00
Philipp Oppermann
eace075f2c Run cargo update for post-03 2020-09-24 09:08:28 +02:00
Philipp Oppermann
2d5150f2a3 Merge branch 'post-02' into post-03 2020-09-24 09:08:11 +02:00
Philipp Oppermann
ebb9f0b8a7 Run cargo update 2020-09-24 09:07:45 +02:00
Philipp Oppermann
39450af43a Merge branch 'post-06' into post-07 2020-08-16 18:03:09 +02:00
Philipp Oppermann
7056923ef7 Merge branch 'post-05' into post-06 2020-08-16 18:03:09 +02:00
Philipp Oppermann
f591b959f5 Merge branch 'post-04' into post-05 2020-08-16 18:03:09 +02:00
Philipp Oppermann
edd155d570 Merge branch 'post-03' into post-04 2020-08-16 18:03:09 +02:00
Philipp Oppermann
3200b7a68d Merge branch 'post-02' into post-03 2020-08-16 18:03:09 +02:00
Philipp Oppermann
cde3c8f955 Merge branch 'post-01' into post-02 2020-08-16 18:03:09 +02:00
Philipp Oppermann
6ad573bb11 Run workflow on workflow_dispatch event
This allows us to trigger a branch build from the master branch on schedule.
2020-08-16 18:01:58 +02:00
Philipp Oppermann
56652b79fb Merge branch 'post-06' into post-07 2020-08-16 17:59:56 +02:00
Philipp Oppermann
817e36c064 Increase double fault stack size 2020-08-16 17:57:43 +02:00
Philipp Oppermann
a0e428cc8c Merge branch 'post-04' into post-05 2020-07-17 15:57:35 +02:00
Philipp Oppermann
c18cd874ca Merge branch 'post-03' into post-04 2020-07-17 15:57:35 +02:00
Philipp Oppermann
f316bd1a08 Merge branch 'post-02' into post-03 2020-07-17 15:57:35 +02:00
Philipp Oppermann
fc81448c1a Merge branch 'post-06' into post-07 2020-07-17 15:57:35 +02:00
Philipp Oppermann
18bc113726 Merge branch 'post-05' into post-06 2020-07-17 15:57:35 +02:00
Philipp Oppermann
4a4d704384 Add note about minimum required nightly version 2020-07-17 15:57:32 +02:00
Philipp Oppermann
b90e5fb32a Merge branch 'post-04' into post-05 2020-07-17 11:48:35 +02:00
Philipp Oppermann
6380e069f7 Merge branch 'post-03' into post-04 2020-07-17 11:48:35 +02:00
Philipp Oppermann
1ddc27ca88 Merge branch 'post-02' into post-03 2020-07-17 11:48:35 +02:00
Philipp Oppermann
ee5cd18080 Merge branch 'post-06' into post-07 2020-07-17 11:48:35 +02:00
Philipp Oppermann
70458b6f6f Merge branch 'post-05' into post-06 2020-07-17 11:48:35 +02:00
Philipp Oppermann
71d8a438f7 Update Readme for new build-std build instructions 2020-07-17 11:48:27 +02:00
Philipp Oppermann
3a77cbe794 Merge branch 'post-01' into post-02 2020-07-17 11:44:17 +02:00
Philipp Oppermann
3fb4695f6c Bootimage is not needed for post-01 2020-07-17 11:39:47 +02:00
Philipp Oppermann
635677d07c Fix workflow syntax 2020-07-17 11:38:30 +02:00
Philipp Oppermann
b276ec4765 Update CI script to be consistent with other branches 2020-07-17 11:36:33 +02:00
Philipp Oppermann
b7fb1e8764 Merge branch 'post-04' into post-05 2020-07-17 11:28:04 +02:00
Philipp Oppermann
7341cff39d Merge branch 'post-03' into post-04 2020-07-17 11:28:04 +02:00
Philipp Oppermann
406c406d5f Merge branch 'post-02' into post-03 2020-07-17 11:28:04 +02:00
Philipp Oppermann
7361740ecb Merge branch 'post-06' into post-07 2020-07-17 11:28:04 +02:00
Philipp Oppermann
51f8e413d5 Merge branch 'post-05' into post-06 2020-07-17 11:28:04 +02:00
Philipp Oppermann
6f9cfce6f9 Don't deny clippy warnings 2020-07-17 11:27:18 +02:00
Philipp Oppermann
5309361224 Merge branch 'post-06' into post-07 2020-07-17 11:24:00 +02:00
Philipp Oppermann
1876a78058 Merge branch 'post-05' into post-06 2020-07-17 11:23:28 +02:00
Philipp Oppermann
3ac92cf275 Merge branch 'post-04' into post-05 2020-07-17 11:23:27 +02:00
Philipp Oppermann
acf3717551 Move extern crate rlibc to lib.rs 2020-07-17 11:22:42 +02:00
Philipp Oppermann
e78d33a5bf Update test command on CI for build-std 2020-07-17 11:21:18 +02:00
Philipp Oppermann
6292789393 Merge branch 'post-03' into post-04 2020-07-17 11:19:25 +02:00
Philipp Oppermann
651adbc8bd Merge branch 'post-02' into post-03 2020-07-17 11:16:18 +02:00
Philipp Oppermann
4bbaae24a4 Merge pull request #835 from phil-opp/post-02-Zbuild-std
Migrate post-02 code from cargo-xbuild to `-Zbuild-std`
2020-07-17 11:13:11 +02:00
Philipp Oppermann
44d7654ef6 Add toml extension to .cargo/config and use table format for unstable 2020-07-17 10:57:04 +02:00
Philipp Oppermann
f135aefae8 Update to bootloader 0.9.8 2020-07-17 10:52:21 +02:00
Philipp Oppermann
ffaac76876 Use latest release of bootimage on CI 2020-07-17 10:52:08 +02:00
Philipp Oppermann
5ae9f62f4d Adjust job names on CI to match existing names 2020-07-16 17:15:03 +02:00
Philipp Oppermann
da0ee38f09 Add names for all CI operations 2020-07-16 17:10:50 +02:00
Philipp Oppermann
263e852dcc Use functionality of toolchain action for installing rustup components 2020-07-16 17:04:02 +02:00
Philipp Oppermann
614e5b0e86 Install rustup components after checking out the repo
so that the components are installed for the nightly toolchain.
2020-07-16 16:36:19 +02:00
Philipp Oppermann
9ee42e0f5f Install Zbuild-std branch of bootimage 2020-07-16 16:32:50 +02:00
Philipp Oppermann
c4672096d4 Install rust-src component for cargo check 2020-07-16 16:31:52 +02:00
Philipp Oppermann
ffe1b6abd0 Rewrite CI script with using actions-rs actions
This gives use support for github's scoped annotations when there are errors or warnings.
2020-07-16 16:21:37 +02:00
Philipp Oppermann
16ffe80fd5 Add dependency on rlibc 2020-07-16 15:39:07 +02:00
Philipp Oppermann
07d8a22a53 Use -Zbuildstd instead of cargo-xbuild 2020-07-16 15:37:09 +02:00
Philipp Oppermann
96a02c441e Merge branch 'post-06' into post-07 2020-06-08 12:30:28 +02:00
Philipp Oppermann
0dd32e2680 Merge pull request #818 from phil-opp/post-06-prevent-tail-recursion
Do a volatile read in stack_overflow test to avoid tail recursion
2020-06-08 12:29:58 +02:00
Philipp Oppermann
5735cb8ec0 Do a volatile read in stack_overflow test to avoid tail recursion
This prevents the compiler from transforming the tail recursive function into a loop, which does not lead to a stack overflow. It also avoids the LLVM bug where functions with side-effect-free endless loops are removed. Thus, the test now also works in `--release` mode.
2020-06-08 12:17:06 +02:00
Philipp Oppermann
95612c1d3c Merge branch 'post-06' into post-07 2020-06-08 12:05:05 +02:00
Philipp Oppermann
12d94fd2e9 Adjust stack_overflow test print message 2020-06-08 12:01:04 +02:00
Philipp Oppermann
8c10bbb096 Merge branch 'post-05' into post-06 2020-06-08 11:57:12 +02:00
Philipp Oppermann
7846bd0559 Remove superfluous printing from test_breakpoint_exception 2020-06-08 11:55:24 +02:00
Philipp Oppermann
3ccc602e38 Merge branch 'post-04' into post-05 2020-06-08 11:53:01 +02:00
Philipp Oppermann
bf33685d00 Merge pull request #816 from phil-opp/post-04-testable-trait
Create a testable trait for printing test messages automatically
2020-06-08 11:50:57 +02:00
Philipp Oppermann
3ee6badb33 Keep trivial_assertion test 2020-06-08 11:39:09 +02:00
Philipp Oppermann
9f9ff59489 Create a testable trait for printing test messages automatically 2020-06-08 11:04:03 +02:00
Philipp Oppermann
93b96f21ac Update pic8259_simple to v0.2.0 2020-05-21 09:29:49 +02:00
Philipp Oppermann
f9446883e2 Merge branch 'post-05' into post-06 2020-05-20 14:56:19 +02:00
Philipp Oppermann
735210fc8f Merge branch 'post-04' into post-05 2020-05-20 14:56:19 +02:00
Philipp Oppermann
22b49dea49 Merge branch 'post-06' into post-07 2020-05-20 14:56:19 +02:00
Philipp Oppermann
a1c7931a77 Run cargo update for post-04 2020-05-20 14:56:06 +02:00
Philipp Oppermann
067f2c9b39 Merge branch 'post-06' into post-07 2020-05-20 14:26:29 +02:00
Philipp Oppermann
2bf84f60e9 Merge branch 'post-05' into post-06 2020-05-20 14:25:56 +02:00
Philipp Oppermann
0d506d5dd5 Merge branch 'post-04' into post-05 2020-05-20 14:25:23 +02:00
Philipp Oppermann
2c30310281 Update x86_64 to version 0.11.0 2020-05-20 14:25:16 +02:00
Philipp Oppermann
122bc99766 Merge branch 'post-06' into post-07 2020-05-20 14:06:59 +02:00
Philipp Oppermann
bfed1f44e2 Merge branch 'post-05' into post-06 2020-05-20 14:06:06 +02:00
Philipp Oppermann
158873acd4 Merge branch 'post-04' into post-05 2020-05-20 14:05:29 +02:00
Philipp Oppermann
57cd52b7f5 Merge branch 'post-03' into post-04 2020-05-20 14:04:54 +02:00
Philipp Oppermann
a004e7da9c Merge branch 'post-02' into post-03 2020-05-20 14:04:37 +02:00
Philipp Oppermann
b1bf0873ce Update bootloader to v0.9.3 2020-05-20 14:03:59 +02:00
15 changed files with 221 additions and 170 deletions

View File

@@ -1,3 +1,7 @@
[unstable]
build-std = ["core", "compiler_builtins"]
build-std-features = ["compiler-builtins-mem"]
[build]
target = "x86_64-blog_os.json"

View File

@@ -1,96 +0,0 @@
name: Build Code
on:
push:
branches:
- '*'
- '!staging.tmp'
tags:
- '*'
schedule:
- cron: '40 3 * * *' # every day at 3:40
pull_request:
jobs:
test:
name: "Test"
strategy:
matrix:
platform: [
ubuntu-latest,
macos-latest,
windows-latest
]
runs-on: ${{ matrix.platform }}
timeout-minutes: 15
steps:
- name: "Checkout Repository"
uses: actions/checkout@v1
- name: Install Rustup
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain nightly
echo ::add-path::$HOME/.cargo/bin
if: runner.os == 'macOS'
- name: "Print Rust Version"
run: |
rustc -Vv
cargo -Vv
- name: "Install Rustup Components"
run: rustup component add rust-src llvm-tools-preview
- name: "Install cargo-xbuild"
run: cargo install cargo-xbuild --debug
- name: "Install bootimage"
run: cargo install bootimage --debug
- name: "Run cargo xbuild"
run: cargo xbuild
- name: "Create Bootimage"
run: cargo bootimage
# install QEMU
- name: Install QEMU (Linux)
run: sudo apt update && sudo apt install qemu-system-x86
if: runner.os == 'Linux'
- name: Install QEMU (macOS)
run: brew install qemu
if: runner.os == 'macOS'
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
- name: Install Scoop (Windows)
run: |
Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')
echo ::add-path::$HOME\scoop\shims
if: runner.os == 'Windows'
shell: pwsh
- name: Install QEMU (Windows)
run: scoop install qemu
if: runner.os == 'Windows'
shell: pwsh
- name: "Print QEMU Version"
run: qemu-system-x86_64 --version
- name: "Run cargo xtest"
run: cargo xtest
check_formatting:
name: "Check Formatting"
runs-on: ubuntu-latest
timeout-minutes: 2
steps:
- uses: actions/checkout@v1
- name: "Use the latest Rust nightly with rustfmt"
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
components: rustfmt
override: true
- run: cargo fmt -- --check

130
.github/workflows/code.yml vendored Normal file
View File

@@ -0,0 +1,130 @@
name: Code
on:
push:
branches:
- '*'
- '!staging.tmp'
tags:
- '*'
schedule:
- cron: '40 3 * * *' # every day at 3:40
pull_request:
workflow_dispatch:
jobs:
check:
name: Check
strategy:
fail-fast: false
matrix:
platform: [
ubuntu-latest,
macos-latest,
windows-latest
]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
- name: Install `rust-src` Rustup Component
run: rustup component add rust-src
- name: Run `cargo check`
uses: actions-rs/cargo@v1
with:
command: check
test:
name: Test
strategy:
fail-fast: false
matrix:
platform: [
ubuntu-latest,
macos-latest,
windows-latest
]
runs-on: ${{ matrix.platform }}
steps:
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
- name: Install bootimage
run: cargo install bootimage --debug
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Rustup Components
run: rustup component add rust-src llvm-tools-preview
- name: Run `cargo bootimage`
uses: actions-rs/cargo@v1
with:
command: bootimage
# install QEMU
- name: Install QEMU (Linux)
run: sudo apt update && sudo apt install qemu-system-x86
if: runner.os == 'Linux'
- name: Install QEMU (macOS)
run: brew install qemu
if: runner.os == 'macOS'
env:
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
- name: Install QEMU (Windows)
run: |
choco install qemu --version 2021.5.5
echo "$Env:Programfiles\qemu" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
if: runner.os == 'Windows'
shell: pwsh
- name: "Print QEMU Version"
run: qemu-system-x86_64 --version
- name: Run `cargo test`
uses: actions-rs/cargo@v1
with:
command: test
check_formatting:
name: Check Formatting
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: rustfmt
override: true
- name: Run `cargo fmt`
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v2
- name: Install Rust Toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: nightly
components: clippy, rust-src
override: true
- name: Run `cargo clippy`
uses: actions-rs/cargo@v1
with:
command: clippy

51
Cargo.lock generated
View File

@@ -1,10 +1,12 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "bit_field"
version = "0.9.0"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed8765909f9009617974ab6b7d332625b320b33c326b1e9321382ef1999b5d56"
checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
[[package]]
name = "bitflags"
@@ -19,24 +21,18 @@ dependencies = [
"bootloader",
"lazy_static",
"pc-keyboard",
"pic8259_simple",
"pic8259",
"spin",
"uart_16550",
"volatile",
"volatile 0.2.7",
"x86_64",
]
[[package]]
name = "bootloader"
version = "0.8.8"
version = "0.9.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3ed4f735c4e455ba86a3d2939b1c0729414153642106c9d035693355630a42c"
[[package]]
name = "cpuio"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22b8e308ccfc5acf3b82f79c0eac444cf6114cb2ac67a230ca6c177210068daa"
checksum = "8a9c8b93781debeb5bc44a12adc4be812aa9feb659d60eeafcd7e9bedb549561"
[[package]]
name = "lazy_static"
@@ -49,17 +45,17 @@ dependencies = [
[[package]]
name = "pc-keyboard"
version = "0.5.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c48392db76c4e9a69e0b3be356c5f97ebb7b14413c5e4fd0af4755dbf86e2fce"
checksum = "ed089a1fbffe3337a1a345501c981f1eb1e47e69de5a40e852433e12953c3174"
[[package]]
name = "pic8259_simple"
version = "0.1.1"
name = "pic8259"
version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc64b2fd10828da8521b6cdabe0679385d7d2a3a6d4c336b819d1fa31ba35c72"
checksum = "08cc920d83ee33c0f9b73aa441e75468bf2d10c959a3eb6260cf720b05ac91a1"
dependencies = [
"cpuio",
"x86_64",
]
[[package]]
@@ -70,9 +66,9 @@ checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d"
[[package]]
name = "uart_16550"
version = "0.2.4"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d44b0f30cb82b0fbc15b78ade1064226529ad52028bc8cb8accb98ff6f3d7131"
checksum = "503a6c0e6d82daa87985e662d120c0176b09587c92a68db22781b28ae95405dd"
dependencies = [
"bitflags",
"x86_64",
@@ -80,16 +76,23 @@ dependencies = [
[[package]]
name = "volatile"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6af0edf5b4faacc31fc51159244d78d65ec580f021afcef7bd53c04aeabc7f29"
checksum = "f6b06ad3ed06fef1713569d547cdbdb439eafed76341820fb0e0344f29a41945"
[[package]]
name = "volatile"
version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4c2dbd44eb8b53973357e6e207e370f0c1059990df850aca1eca8947cf464f0"
[[package]]
name = "x86_64"
version = "0.9.6"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4206b60c9f99766329b66962aa8ddc01df6c7edd02edc046b7a69d5df9fcdbcf"
checksum = "fb611915c917c6296d11e23f71ff1ecfe49c5766daba92cd3df52df6b58285b6"
dependencies = [
"bit_field",
"bitflags",
"volatile 0.4.4",
]

View File

@@ -13,13 +13,13 @@ name = "stack_overflow"
harness = false
[dependencies]
bootloader = "0.8.0"
bootloader = "0.9"
volatile = "0.2.6"
spin = "0.5.2"
x86_64 = "0.9.6"
x86_64 = "0.14.2"
uart_16550 = "0.2.0"
pic8259_simple = "0.1.1"
pc-keyboard = "0.5.0"
pic8259 = "0.10.1"
pc-keyboard = "0.7.0"
[dependencies.lazy_static]
version = "1.0"

View File

@@ -1,6 +1,6 @@
# Blog OS (Hardware Interrupts)
[![Build Status](https://github.com/phil-opp/blog_os/workflows/Build%20Code/badge.svg?branch=post-07)](https://github.com/phil-opp/blog_os/actions?query=workflow%3A%22Build+Code%22+branch%3Apost-07)
[![Build Status](https://github.com/phil-opp/blog_os/workflows/Code/badge.svg?branch=post-07)](https://github.com/phil-opp/blog_os/actions?query=workflow%3A%22Code%22+branch%3Apost-07)
This repository contains the source code for the [Hardware Interrupts][post] post of the [Writing an OS in Rust](https://os.phil-opp.com) series.
@@ -10,19 +10,23 @@ This repository contains the source code for the [Hardware Interrupts][post] pos
## Building
You need a nightly Rust compiler. First you need to install the `cargo-xbuild` and `bootimage` tools:
This project requires a nightly version of Rust because it uses some unstable features. At least nightly _2020-07-15_ is required for building. You might need to run `rustup update nightly --force` to update to the latest nightly even if some components such as `rustfmt` are missing it.
You can build the project by running:
```
cargo install cargo-xbuild bootimage
cargo build
```
Then you can build the project by running:
To create a bootable disk image from the compiled kernel, you need to install the [`bootimage`] tool:
[`bootimage`]: https://github.com/rust-osdev/bootimage
```
cargo xbuild
cargo install bootimage
```
To create a bootable disk image, run:
After installing, you can create the bootable disk image by running:
```
cargo bootimage
@@ -39,10 +43,10 @@ You can run the disk image in [QEMU] through:
[QEMU]: https://www.qemu.org/
```
cargo xrun
cargo run
```
Of course [QEMU] needs to be installed for this.
[QEMU] and the [`bootimage`] tool need to be installed for this.
You can also write the image to an USB stick for booting it on a real machine. On Linux, the command for this is:

View File

@@ -9,10 +9,10 @@ lazy_static! {
static ref TSS: TaskStateSegment = {
let mut tss = TaskStateSegment::new();
tss.interrupt_stack_table[DOUBLE_FAULT_IST_INDEX as usize] = {
const STACK_SIZE: usize = 4096;
const STACK_SIZE: usize = 4096 * 5;
static mut STACK: [u8; STACK_SIZE] = [0; STACK_SIZE];
let stack_start = VirtAddr::from_ptr(unsafe { &STACK });
let stack_start = VirtAddr::from_ptr(&raw const STACK);
let stack_end = stack_start + STACK_SIZE;
stack_end
};
@@ -41,12 +41,12 @@ struct Selectors {
}
pub fn init() {
use x86_64::instructions::segmentation::set_cs;
use x86_64::instructions::segmentation::{Segment, CS};
use x86_64::instructions::tables::load_tss;
GDT.0.load();
unsafe {
set_cs(GDT.1.code_selector);
CS::set_reg(GDT.1.code_selector);
load_tss(GDT.1.tss_selector);
}
}

View File

@@ -1,6 +1,6 @@
use crate::{gdt, print, println};
use lazy_static::lazy_static;
use pic8259_simple::ChainedPics;
use pic8259::ChainedPics;
use spin;
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};
@@ -46,18 +46,18 @@ pub fn init_idt() {
IDT.load();
}
extern "x86-interrupt" fn breakpoint_handler(stack_frame: &mut InterruptStackFrame) {
extern "x86-interrupt" fn breakpoint_handler(stack_frame: InterruptStackFrame) {
println!("EXCEPTION: BREAKPOINT\n{:#?}", stack_frame);
}
extern "x86-interrupt" fn double_fault_handler(
stack_frame: &mut InterruptStackFrame,
stack_frame: InterruptStackFrame,
_error_code: u64,
) -> ! {
panic!("EXCEPTION: DOUBLE FAULT\n{:#?}", stack_frame);
}
extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: &mut InterruptStackFrame) {
extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: InterruptStackFrame) {
print!(".");
unsafe {
PICS.lock()
@@ -65,15 +65,18 @@ extern "x86-interrupt" fn timer_interrupt_handler(_stack_frame: &mut InterruptSt
}
}
extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: &mut InterruptStackFrame) {
extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: InterruptStackFrame) {
use pc_keyboard::{layouts, DecodedKey, HandleControl, Keyboard, ScancodeSet1};
use spin::Mutex;
use x86_64::instructions::port::Port;
lazy_static! {
static ref KEYBOARD: Mutex<Keyboard<layouts::Us104Key, ScancodeSet1>> = Mutex::new(
Keyboard::new(layouts::Us104Key, ScancodeSet1, HandleControl::Ignore)
);
static ref KEYBOARD: Mutex<Keyboard<layouts::Us104Key, ScancodeSet1>> =
Mutex::new(Keyboard::new(
ScancodeSet1::new(),
layouts::Us104Key,
HandleControl::Ignore
));
}
let mut keyboard = KEYBOARD.lock();
@@ -95,13 +98,8 @@ extern "x86-interrupt" fn keyboard_interrupt_handler(_stack_frame: &mut Interrup
}
}
#[cfg(test)]
use crate::{serial_print, serial_println};
#[test_case]
fn test_breakpoint_exception() {
serial_print!("test_breakpoint_exception...");
// invoke a breakpoint exception
x86_64::instructions::interrupts::int3();
serial_println!("[ok]");
}

View File

@@ -18,11 +18,25 @@ pub fn init() {
unsafe { interrupts::PICS.lock().initialize() };
x86_64::instructions::interrupts::enable();
}
pub trait Testable {
fn run(&self) -> ();
}
pub fn test_runner(tests: &[&dyn Fn()]) {
impl<T> Testable for T
where
T: Fn(),
{
fn run(&self) {
serial_print!("{}...\t", core::any::type_name::<T>());
self();
serial_println!("[ok]");
}
}
pub fn test_runner(tests: &[&dyn Testable]) {
serial_println!("Running {} tests", tests.len());
for test in tests {
test();
test.run();
}
exit_qemu(QemuExitCode::Success);
}

View File

@@ -33,3 +33,8 @@ fn panic(info: &PanicInfo) -> ! {
fn panic(info: &PanicInfo) -> ! {
blog_os::test_panic_handler(info)
}
#[test_case]
fn trivial_assertion() {
assert_eq!(1, 1);
}

View File

@@ -3,9 +3,6 @@ use lazy_static::lazy_static;
use spin::Mutex;
use volatile::Volatile;
#[cfg(test)]
use crate::{serial_print, serial_println};
lazy_static! {
/// A global `Writer` instance that can be used for printing to the VGA text buffer.
///
@@ -180,18 +177,14 @@ pub fn _print(args: fmt::Arguments) {
#[test_case]
fn test_println_simple() {
serial_print!("test_println... ");
println!("test_println_simple output");
serial_println!("[ok]");
}
#[test_case]
fn test_println_many() {
serial_print!("test_println_many... ");
for _ in 0..200 {
println!("test_println_many output");
}
serial_println!("[ok]");
}
#[test_case]
@@ -199,8 +192,6 @@ fn test_println_output() {
use core::fmt::Write;
use x86_64::instructions::interrupts;
serial_print!("test_println_output... ");
let s = "Some test string that fits on a single line";
interrupts::without_interrupts(|| {
let mut writer = WRITER.lock();
@@ -210,6 +201,4 @@ fn test_println_output() {
assert_eq!(char::from(screen_char.ascii_character), c);
}
});
serial_println!("[ok]");
}

View File

@@ -4,7 +4,7 @@
#![test_runner(blog_os::test_runner)]
#![reexport_test_harness_main = "test_main"]
use blog_os::{println, serial_print, serial_println};
use blog_os::println;
use core::panic::PanicInfo;
#[no_mangle] // don't mangle the name of this function
@@ -21,7 +21,5 @@ fn panic(info: &PanicInfo) -> ! {
#[test_case]
fn test_println() {
serial_print!("test_println... ");
println!("test_println output");
serial_println!("[ok]");
}

View File

@@ -13,7 +13,7 @@ pub extern "C" fn _start() -> ! {
}
fn should_fail() {
serial_print!("should_fail... ");
serial_print!("should_panic::should_fail...\t");
assert_eq!(0, 1);
}

View File

@@ -9,7 +9,7 @@ use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame};
#[no_mangle]
pub extern "C" fn _start() -> ! {
serial_print!("stack_overflow... ");
serial_print!("stack_overflow::stack_overflow...\t");
blog_os::gdt::init();
init_test_idt();
@@ -23,6 +23,7 @@ pub extern "C" fn _start() -> ! {
#[allow(unconditional_recursion)]
fn stack_overflow() {
stack_overflow(); // for each recursion, the return address is pushed
volatile::Volatile::new(0).read(); // prevent tail recursion optimizations
}
lazy_static! {
@@ -43,7 +44,7 @@ pub fn init_test_idt() {
}
extern "x86-interrupt" fn test_double_fault_handler(
_stack_frame: &mut InterruptStackFrame,
_stack_frame: InterruptStackFrame,
_error_code: u64,
) -> ! {
serial_println!("[ok]");

View File

@@ -1,6 +1,6 @@
{
"llvm-target": "x86_64-unknown-none",
"data-layout": "e-m:e-i64:64-f80:128-n8:16:32:64-S128",
"data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128",
"arch": "x86_64",
"target-endian": "little",
"target-pointer-width": "64",
@@ -11,5 +11,6 @@
"linker": "rust-lld",
"panic-strategy": "abort",
"disable-redzone": true,
"features": "-mmx,-sse,+soft-float"
"features": "-mmx,-sse,+soft-float",
"rustc-abi": "x86-softfloat"
}