Sean Cross
b43366e6ec
kernel: services: fix suspend for running processes
...
If a process is currently running, it needs to be placed into the
`Debug` state rather than the `Ready` state.
Additionally, the process that's being switched to must enter the
`Running` state.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-25 16:03:06 +08:00
Sean Cross
1cb86078d5
kernel: riscv: suspend or terminate processes that fail
...
If a process fails for some reason (e.g. by performing a fault) and
there is no exception handler, either terminate the process or (if
gdbserver is enabled) have it suspend the process.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-25 16:02:11 +08:00
Sean Cross
184274782c
kernel: config: temporarily remove support for lto
...
LTO is currently broken with Rust 1.54.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-18 18:16:13 +08:00
Sean Cross
bb0339652a
kernel: use local copy of riscv crate
...
A local copy of the `riscv` crate is used in order to get support for
the `xous` target_os.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-18 18:15:29 +08:00
Sean Cross
19653e9c53
kernel: compatibility with riscv32imac-unknown-xous-elf
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-18 18:14:24 +08:00
Sean Cross
e44eec2334
kernel: fix remaining warnings on hosted mode
...
This removes all remaining warnings from hosted mode. Tests pass, and
the system continues to run normally.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-16 15:07:25 +08:00
Sean Cross
5eaa3a41b1
kernel: services: fix warnings on hosted mode
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-16 15:01:07 +08:00
Sean Cross
90d1c7a4b8
kernel: move arch mods into their own dir
...
Move `hosted.rs` into `hosted/mod.rs` and `riscv.rs` into
`riscv/mod.rs`.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-16 14:55:38 +08:00
Sean Cross
c59cdfbd51
kernel: rename WouldBlock syscall result
...
This reflects the new naming convention, which is clearer.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-16 12:25:39 +08:00
Sean Cross
afdf8531aa
kernel: use resolver v2
...
This is required now to support tests, since tests create processes as
threads.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-16 12:25:15 +08:00
Sean Cross
1b315de830
kernel: make init proces stack grown downwards
...
Previously, we were creating a stack beginning at the initial page,
and then growing it upwards. The correct behavior is to begin it at
the top and grow it downwards.
In order to do this, subtract the size of the stack from the initial
pointer.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-15 19:26:11 +08:00
Sean Cross
e29dc5a739
kernel: don't allow allocating exception thread
...
This prevents the exception thread from being allocated as a normal
system thread.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-15 19:25:29 +08:00
bunnie
5113df5eec
Merge branch 'bunnie-dev' into main
...
Use a RefCell to solve the interior mutability issue introduced
by the &mut check introduced on MemoryRanges.
2021-08-10 18:13:33 +08:00
Sean Cross
9b4333802d
vscode: specify platform for vscode support
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:51:47 +08:00
Sean Cross
fa2a841f8a
kernel: fix hosted mode exception support
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:51:24 +08:00
Sean Cross
6985fda7ba
kernel: get exceptions fully working
...
This finishes work with exceptions such that they now actually work.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 17:47:44 +08:00
Sean Cross
9bba083e2e
kernel: remove debug print from mem.rs
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 13:05:23 +08:00
Sean Cross
15c9eadc4c
kernel: riscv: re-fix mem warnings
...
The previous approach did not work, and broke everything. This fixes it
properly.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 13:02:16 +08:00
Sean Cross
b6f706411b
kernel: gdb_server: fix clippy warnings
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:55:22 +08:00
Sean Cross
68f5e81d3f
kernel: riscv: fix warnings in process
...
Fix clippy warnings in the `process.rs` file.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 12:54:43 +08:00
Sean Cross
dbd34318ce
Revert "kernel: fix remaining clippy warnings"
...
This appears to have broken things.
This reverts commit 8b0dd3630c .
2021-08-06 12:51:40 +08:00
Sean Cross
8b0dd3630c
kernel: fix remaining clippy warnings
...
This removes all remaining clippy warnings from inside the kernel.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:43:34 +08:00
Sean Cross
0a6a1f2edd
kernel: syscall: ignore final Clippy warning
...
This warning is due to some debug information that is currently unused.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:39:09 +08:00
Sean Cross
cc8dc49dba
kernel: riscv: refactor irqs to support exceptions
...
This fixes the exception handler so that it can support user-defined
exceptions. Additionally, kernel mode errors are called out now.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:37:27 +08:00
Sean Cross
19f68edbb4
kernel: riscv: allow exceptions with NULL pc
...
When the program counter is NULL, we can still get exceptions. This
happens when we jump to an invalid address, for example.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:34:50 +08:00
Sean Cross
08b787a03e
kernel: debug: fix remaining clippy lints
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:34:30 +08:00
Sean Cross
c7ff0ceb21
kernel: mem: fix remaining clippy lints
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:32:52 +08:00
Sean Cross
d27a2eb27e
kernel: mem: use iter instead of array access
...
This compresses the entirety of the memory range finder into a single
statement. As a result, duplicate code is removed and we can elide more
range checks.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 11:30:29 +08:00
Sean Cross
9dc4fcbf55
kernel: services: fix all clippy warnings
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:16:29 +08:00
Sean Cross
d4675ef9cf
kernel: services: allow unsetting exception handler
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:05:29 +08:00
Sean Cross
5b2ac0df68
kernel: implement SetExceptionHandler routine
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:03:29 +08:00
Sean Cross
76953985fe
kernel: fix clippy warnings in mem/server
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:03:12 +08:00
Sean Cross
059fc18850
services: add exception handler routines
...
Add a function to set and one to clear the current exception handler.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:02:32 +08:00
Sean Cross
a096509a04
kernel: irq: use iter for IRQ_HANDLERS
...
Don't use direct indexing. Instead, use an iterator to go through the
IRQ_HANDLERS array.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-06 10:00:42 +08:00
Sean Cross
b98e465d12
kernel: more clippy warning fixes
...
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-05 16:59:27 +08:00
Sean Cross
759ddfedd6
kernel: add initial cut of exception handling
...
Though it is not yet wired up, the exception handler groundwork is laid
here.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-05 16:18:10 +08:00
Sean Cross
fdf3c12b85
Merge branch 'main' into exception-handler
2021-08-05 10:03:55 +08:00
bunnie
d68b6639cf
remove now-unused stub
2021-08-04 23:29:00 +08:00
bunnie
d42658a65d
fix kernel debug input
...
for whatever reason, by default, uarts in litex are configured
not to drain a fifo when you read them -- they only drain
after you write EV_PENDING.
2021-08-04 22:40:12 +08:00
Sean Cross
afcef0d05b
kernel: use vendered version of utralib
...
By vendoring this package, we can avoid causing a rebuild unnecessarily.
This will be removed when Rust 1.55 is released and we can bring the
`kernel` package back into the main workspace.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-04 12:19:16 +08:00
Sean Cross
f5cf94524a
kernel: add framework for exceptions
...
Add the ability to invoke exception handlers. This is not yet properly
wired up, but the framework is there.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-02 11:04:47 +08:00
Sean Cross
2cd42edc22
kernel: use target_os = "none" instead of baremetal
...
This is more portable, and plays nicer with `rust-analyzer`.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-26 15:32:59 +08:00
Sean Cross
df30fd580d
kernel: add Exception(usize) as process state
...
When a process encounters an exception of some sort, it will enter this
state if a handler is available.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-26 15:32:03 +08:00
bunnie
53f35f9928
intermediate work toward getting the password box going
...
lots of changes, maybe finally getting out of the UX rathole now
that basic localization is in place
2021-07-26 00:51:22 +08:00
Sean Cross
4e17946960
kernel: riscv: ensure stack is 16-byte aligned
...
Make sure processes are set up such that the stack is aligned to a
16-byte boundary.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-07-07 14:34:05 +08:00
Sean Cross
4e54bfdc7a
kernel: use gdbstub dev/0.6
...
The previous brach will shortly be deleted.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-27 19:23:53 +08:00
Sean Cross
7b7be0fe9e
hosted: fix MemoryRange refactor
...
This fixes the MemoryRange refactor where `.addr` and `.size` are now
private fields.
Previously it had only been tested on baremetal mode.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-24 18:02:28 +08:00
Sean Cross
a99839ecd6
xous: mark MemoryRange fields as private
...
Mark the private fields in a `MemoryRange` struct as being private. This
allows us to perform operations on the memory range armed with the
knowledge that the entire range is valid and unaliased.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-24 17:41:16 +08:00
Sean Cross
1fb7d4ebd5
kernel: use unsafe {} on Hosted mode
...
Since `MemoryRange::new()` is now unsafe, add an `unsafe {}` note when
calling this function on Hosted mode.
This fixes the build.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-24 17:07:41 +08:00
Sean Cross
977a175bb5
xous: mark MemoryRange::new() as unsafe
...
This function allows for creating arbitrary memory ranges. Mark this
function as `unsafe` in order to warn users that this can be used to
create invalid memory regions.
Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-24 17:02:02 +08:00