Stephen Marz
72563c3161
Switch to a static block list. This will make it easier to determine
...
which drive we're talking about. 1 is 0x1000_1000 ... 8 is 0x1000_8000
2020-03-12 20:44:28 -04:00
Stephen Marz
93969a2bf5
Added testing first 10 bytes of the hdd.dsk file
2020-03-12 20:10:36 -04:00
Stephen Marz
58efe7e3ac
Added block request read. Quite dirty, but for now it works
2020-03-12 19:47:58 -04:00
Stephen Marz
552595d901
Fixed to use new scheduler return values
2020-03-12 13:56:21 -04:00
Stephen Marz
7b038cdc24
Right now, we return a pointer by usize. This is not good programming in
...
Rust. Instead, the scheduler needs to be modified to return a process
structure's reference. Then, we can extract the fields and then switch.
However, this will require us to have to change how the PROCESS_LIST
works. Since it uses move constructs, we cannot move a process out of it
when we replace the process list.
2020-03-12 13:55:11 -04:00
Stephen Marz
d9b1743698
Changed scheduler to only return the frame and satp register. The mepc
...
is now stored in the trap frame.
2020-03-12 13:54:39 -04:00
Stephen Marz
c6b261bf20
Added comments and reformatted using rustfmt
2020-03-12 13:36:50 -04:00
Stephen Marz
bc9158bd23
Changed the queue size to only take one page.
2020-03-12 13:36:18 -04:00
Stephen Marz
f5ce75dbe8
Finished setup, rearranged queue creation and testing bits. This makes it so we don't have to free anything if we fail after setting up the queue.
2020-03-12 13:36:08 -04:00
Stephen Marz
a32c6fc995
Updates
2020-03-11 17:09:09 -04:00
Stephen Marz
46a6296dec
Added block specific routines and stub setup routine for block devices
2020-03-10 19:29:29 -04:00
Stephen Marz
39cb72ad9f
Added virtio probing to kinit
2020-03-10 17:17:12 -04:00
Stephen Marz
a29698221d
Added virtio structures and stubs for setting up devices
2020-03-10 17:16:57 -04:00
Stephen Marz
d403ae8b7b
Add hdd.dsk to ignore
2020-03-10 17:16:44 -04:00
Stephen Marz
3ffb53405d
Add many virtio devices
2020-03-10 17:16:13 -04:00
Stephen Marz
795e7945f8
Load block device through make run
2020-03-10 16:51:22 -04:00
Stephen Marz
d44f729957
Split CTX switch time and frequency and also use build_satp for switching to user process
2020-03-10 15:35:21 -04:00
Stephen Marz
f2b1e2018a
Moved PC to trap frame so we don't restart the function
2020-03-10 14:55:26 -04:00
Stephen Marz
2984472493
Added chapter 9
2020-03-10 13:52:09 -04:00
Stephen Marz
d154e86d9e
Added Cargo.lock
2020-03-10 13:51:44 -04:00
Stephen Marz
08c5ddafc2
Updated comments and removed debugging code
2020-03-10 13:50:08 -04:00
Stephen Marz
2bcf1bb000
Change cycle time
2020-03-10 13:01:32 -04:00
Stephen Marz
b27784ed52
Separate sched and switch_to_user
2020-03-10 12:59:36 -04:00
Stephen Marz
cb54d823d2
Fire off the first CTX switch timer!
2020-03-10 12:46:52 -04:00
Stephen Marz
429b056921
Updates to system call. Change stack pointer for MMU
2020-03-10 12:44:08 -04:00
Stephen Marz
88c672171e
Fixed trap. Forgot to reset mtvec in switch_to_user
2020-03-10 12:41:16 -04:00
Stephen Marz
f2f5c855cf
M
2020-03-10 11:21:15 -04:00
Stephen Marz
57145beefd
Fixed trap handler, load kernel stack from trap, fixed init, map a larger swath of memory for init.
2020-03-10 11:20:00 -04:00
Stephen Marz
e6ccf15bda
Added .gitignore to make this doable
2020-03-09 17:51:32 -04:00
Stephen Marz
ee92f8e123
Ugh. Remove target
2020-03-09 17:51:10 -04:00
Stephen Marz
b139313874
Added chapter 8
2020-02-22 08:53:59 -05:00
Alex Chi
2474df886c
Add data flush in uart put function
2020-02-03 10:33:00 +08:00
Stephen Marz
4ffb6e3e3b
Added syscall and shell scheduler
2020-01-18 20:22:47 -05:00
Stephen Marz
e8e379e557
Updates to ch6 -- post ready.
2019-12-08 14:30:41 -05:00
Stephen Marz
eb0c943a71
Updates to process.
2019-12-07 22:04:13 -05:00
Stephen Marz
c1e247cad5
Move lots of code to support user processes.
2019-12-07 13:59:39 -05:00
Stephen Marz
f8c2faa3ae
Updates to process code.
2019-12-05 19:52:02 -05:00
Stephen Marz
fa82110eac
Added adjustment constants.
2019-11-28 12:27:13 -05:00
Stephen Marz
ba678d2252
Fixed HEAP map bug.
2019-11-28 12:22:42 -05:00
Stephen Marz
b723763292
Free root table.
2019-11-28 12:05:24 -05:00
Stephen Marz
b61b3ebbf5
Use zalloc to clear page tables.
2019-11-28 12:04:21 -05:00
Stephen Marz
c99bff8944
Use zalloc to clear page tables.
2019-11-28 12:02:37 -05:00
Stephen Marz
c5179e60d6
Added virtual memory allocation.
2019-11-28 12:01:52 -05:00
Stephen Marz
26e37d33d3
Added comments to process
2019-11-27 23:42:50 -05:00
Stephen Marz
d0c3c9ff6e
Add Process structure and routines.
2019-11-27 17:02:07 -05:00
Stephen Marz
4ec1301e8f
Added chapter 6
2019-11-27 12:59:29 -05:00
Stephen Marz
b9158e5ef7
Added comments for plic.
2019-11-18 19:30:19 -05:00
Stephen Marz
5ca14d6e65
Added comments, moved UART
2019-11-18 19:21:32 -05:00
Stephen Marz
61bb8f3a43
Added comments
2019-11-18 19:19:05 -05:00
Stephen Marz
7faf580765
Added PLIC
2019-11-18 19:14:16 -05:00
Stephen Marz
fb86ff06da
Added PLIC
2019-11-18 19:14:08 -05:00
Stephen Marz
03ff50ef30
Added PLIC
2019-11-18 19:13:52 -05:00
Stephen Marz
b3cd92dc41
Added comments
2019-11-10 09:20:40 -05:00
Stephen Marz
e2dfa8661f
Remove public constants
2019-11-04 15:35:24 -05:00
Stephen Marz
f7547d5c59
Add comments about pointer arithmetic.
2019-11-04 15:27:56 -05:00
Stephen Marz
783cdcfc3b
Remove if statement--let boolean condition stand
2019-11-04 15:26:47 -05:00
Stephen Marz
0c71107da8
Add PLIC functions
2019-11-04 15:25:27 -05:00
Stephen Marz
49d8d6666a
Start chapter 5
2019-11-04 13:14:28 -05:00
Stephen Marz
f13948d5c0
Fixed typos, updates.
2019-11-04 13:04:00 -05:00
Stephen Marz
6cbf12ada9
Updates to pages
2019-11-03 21:26:39 -05:00
Stephen Marz
6cc5cba4b8
Added return_pc as mutable
2019-11-03 21:23:30 -05:00
Stephen Marz
07dffe1823
added ecall printf
2019-11-03 21:21:43 -05:00
Stephen Marz
175c4fc7eb
Added timer reset in async 7
2019-11-03 21:17:29 -05:00
Stephen Marz
4211090d17
Fixed typos
2019-11-03 19:08:35 -05:00
Stephen Marz
a76745278e
Fixed unit type
2019-11-03 19:07:42 -05:00
Stephen Marz
ac5e41ceb4
Update comments
2019-11-03 19:06:38 -05:00
Stephen Marz
79a6500c0b
Rename stat to status
2019-11-03 19:03:10 -05:00
Stephen Marz
5a8523099a
Added epc to trap 3 and 11
2019-11-03 19:00:46 -05:00
Stephen Marz
efaecf96d6
Fixed typo
2019-11-03 19:00:24 -05:00
Stephen Marz
ee5094d821
Added shell traps
2019-11-03 19:00:14 -05:00
Stephen Marz
ccad138c03
Changed trap to machine-only
2019-11-03 18:56:43 -05:00
Stephen Marz
d8b0313842
Remove s_trap in ASM
2019-11-03 18:41:21 -05:00
Stephen Marz
bb64443076
Remove s_trap
2019-11-03 18:41:07 -05:00
Stephen Marz
aaad7c1cec
Added comments and updates to traps
2019-11-02 02:44:40 -04:00
Stephen Marz
6f333bd8f0
Ran rustfmt
2019-10-27 16:03:37 -04:00
Stephen Marz
0b2506e8e5
Updates for ch4
2019-10-27 16:03:12 -04:00
Stephen Marz
b95aacadb4
Changed SATP fence functions
2019-10-25 18:39:59 -04:00
Stephen Marz
7e3d97b908
Fixed mapping kernel stack
2019-10-21 13:19:52 -04:00
Stephen Marz
ce0cc7df11
Fixed mapping kernel stack
2019-10-21 13:19:13 -04:00
Stephen Marz
eb2b9a6aca
Fixed stack location, mapping
2019-10-14 22:15:03 -04:00
Stephen Marz
fb4f3eea91
Fixed stack location, mapping
2019-10-14 22:12:44 -04:00
Stephen Marz
9baea58551
Added cpu.rs for CPU routines. Changed context-switch code.
2019-10-14 21:23:20 -04:00
Stephen Marz
731e428f66
Added timer reset in trap
2019-10-14 16:22:13 -04:00
Stephen Marz
3c99c5cffa
Switched to using mret for trap
2019-10-14 16:14:42 -04:00
Stephen Marz
ccaf9b6a5c
Switched to using mret for trap
2019-10-14 16:14:22 -04:00
Stephen Marz
a10926df76
Change C++ to Rust
2019-10-12 21:33:27 -04:00
Stephen Marz
e82192913f
Change C++ to Rust
2019-10-12 21:32:57 -04:00
Stephen Marz
1411743210
Added chapter 4
2019-10-12 20:42:55 -04:00
Stephen Marz
a8079377dd
Merge branch 'next'
2019-10-12 19:13:42 -04:00
Stephen Marz
03e34ebf96
Added comments, switched KERNEL_TABLE to data section
2019-10-12 19:12:50 -04:00
Stephen Marz
88f5cb514f
Map heap descriptors
2019-10-12 00:11:24 -04:00
Stephen Marz
86d1fa858b
Update id_map_range
2019-10-11 23:38:35 -04:00
Stephen Marz
8ec9fe3fb8
Update id_map_range
2019-10-11 23:38:23 -04:00
Stephen Marz
11bc25b670
Updates
2019-10-11 23:31:47 -04:00
Stephen Marz
aa4a5b1403
Revert "Format uart.rs"
...
This reverts commit 72ea82b224
.
2019-10-11 23:30:29 -04:00
Stephen Marz
4772efe99d
Created a larger pager which autodetects the range for GB, MB, and KB pages
2019-10-11 22:52:35 -04:00
Stephen Marz
72ea82b224
Format uart.rs
2019-10-10 08:46:16 -04:00
Stephen Marz
450a152b24
Add sanity check from kmalloc. Don't zero if it is null
2019-10-10 08:45:39 -04:00
Stephen Marz
a110d17355
Optimized LCR. Reading from MMIO is slower than overwriting
2019-10-10 08:34:31 -04:00
Stephen Marz
ed45e30076
Merge branch 'master' of ssh://github.com/pavehawk2007/osblog
2019-10-10 08:03:08 -04:00
Stephen Marz
4fa3f329a1
Fixed UART overwriting word length bits
2019-10-10 08:03:03 -04:00
Stephen Marz
e89ad79cca
Fixed UART overriding bits
2019-10-10 08:01:39 -04:00
Stephen Marz
16d3e4e9fe
Added info to page allocation table.
2019-10-09 22:02:58 -04:00
Stephen Marz
d667e9c4d6
Added info to page allocation table.
2019-10-09 21:59:17 -04:00
Stephen Marz
deb5c972c2
Make id_map_range easier to read
2019-10-09 21:36:54 -04:00
Stephen Marz
5928b07621
Added comments, fixed formatting
2019-10-09 21:22:29 -04:00
Stephen Marz
1abe0bb336
Fixed over-sizing with kzmalloc
2019-10-09 20:58:31 -04:00
Stephen Marz
88abfb57f2
Fixed typos
2019-10-09 20:57:24 -04:00
Stephen Marz
c4b824dfa7
Fixed looping bug
2019-10-09 20:36:39 -04:00
Stephen Marz
99b98111a4
Added kzmalloc for zeroing allocated memory
2019-10-09 20:36:05 -04:00
Stephen Marz
19eac921db
Change to id_map_range
2019-10-09 20:27:45 -04:00
Stephen Marz
7a6ba92732
Ran rustfmt and removed dead code
2019-10-09 20:24:19 -04:00
Stephen Marz
8ad7d2c24c
Finished sret comparison
2019-10-09 20:21:25 -04:00
Stephen Marz
72f4ce8d46
Updated delegation and removed sie bit in favor of spie
2019-10-09 20:11:21 -04:00
Stephen Marz
3adc054e2d
Added _stack_start and _stack_end to map the stack space
2019-10-09 19:50:03 -04:00
Stephen Marz
d81c619e60
Removed unsafe for id_map_range, added comments
2019-10-09 19:44:39 -04:00
Stephen Marz
037e7044ac
No need for a space literal
2019-10-09 19:42:11 -04:00
Stephen Marz
5634c8342b
Remove drive..no need for it until block
2019-10-09 19:41:47 -04:00
Stephen Marz
6aff7529c2
Disable interrupts for duration of kinit(), reenable in supervisor mode
2019-10-09 18:35:14 -04:00
Stephen Marz
a2a94006f3
Added newline at the end of file, mapped all of PLIC and CLINT
2019-10-09 18:21:43 -04:00
Stephen Marz
982c4afb77
Switch to gcc so that a stage 1 build is sufficient (./do.sh 91)
2019-10-09 18:21:20 -04:00
Stephen Marz
5ad54c6299
Finished MMU, page allocation, and kmem allocation. Switched to supervisor mode in kmain()
2019-10-09 18:09:56 -04:00
Adam Short
0c9fb68846
Fixed do.sh to remove Linux build directory
...
Originally, the do.sh script would remove the linux folder, not the
build folder.
2019-10-08 23:23:26 -04:00
Adam Short
575f055df6
Added TOOLCHAIN_ROOT to .build.config
...
to add prefix where toolchain is being installed to (primarily used
if not using sudo)
2019-10-08 22:53:08 -04:00
Stephen Marz
7f00a999d3
Rename mem.rs to page.rs. We will make a localized allocator for mem.rs, later
2019-10-07 16:43:48 -04:00
Stephen Marz
4a6c58cda6
Added comments
2019-10-07 16:38:03 -04:00
Stephen Marz
d64cad37b9
Update boxed feel. Both are fine, just want to represent both ways to do this.
2019-10-07 16:33:38 -04:00
Stephen Marz
0fe8e027d3
Get rid of spurious mut
2019-10-07 16:33:07 -04:00
Stephen Marz
2937d95f71
Get rid of spurious mut
2019-10-07 16:32:16 -04:00
Stephen Marz
9aa757f9f2
Updates, added a table length
2019-10-07 16:31:27 -04:00
Stephen Marz
076dceff73
Added global allocator and tests
2019-10-07 16:03:39 -04:00
Stephen Marz
a321507a3b
Added chapter 3
2019-10-07 14:43:28 -04:00
Stephen Marz
77994f2289
Added chapter 3
2019-10-06 22:20:39 -04:00
Dr. Koutheir Attouchi
b6f9be4bbb
More comments on what's going on
2019-10-06 17:52:59 +02:00
Dr. Koutheir Attouchi
68e33189fd
Commenting what's being done
2019-10-06 17:16:42 +02:00
Stephen Marz
0b2cbfcb35
Closes issue #5 : Added comments to virt.lds to explain what each section does.
2019-10-06 11:06:51 -04:00
Stephen Marz
33d27d9efa
Use byte iterator
2019-10-05 00:18:24 -04:00
Stephen Marz
691c5b1653
Go back to 8000_0000
2019-10-04 14:11:32 -04:00
Stephen Marz
7a55de2601
Parse out words for initialization
2019-10-04 08:25:39 -04:00
Stephen Marz
14f67420e0
Remove stop bits
2019-10-03 22:07:43 -04:00
Stephen Marz
661ccca9d0
Updates to chapter 2
2019-10-03 21:56:19 -04:00
Stephen Marz
10c493738e
Added chapter 2
2019-10-02 08:41:58 -04:00
Stephen Marz
1402b8c8bd
Fixes issue #1 - assembly trap vector has been added and commented
...
to give context to what it will do in the future.
2019-09-29 08:04:36 -04:00
Stephen Marz
e5190b7dc4
The original OS won't compile if the asm_trap_vector isn't there. It won't
...
do anything, since we haven't gotten that far, yet, but it needs to at least
be a symbol for the linker to have.
2019-09-29 08:00:12 -04:00
Stephen Marz
1dea574177
Rust gets a little mad with the three forward-slashes /// due to
...
rustdoc. So, these were spaced out to look like normal comments.
2019-09-29 07:59:45 -04:00
Stephen Marz
f110f25ad8
Added make_hdd.sh to make hdd.dsk
2019-09-27 13:19:51 -04:00
Stephen Marz
a9bbdf8554
Added chapters 0 and 1
2019-09-27 13:17:29 -04:00