mirror of
https://github.com/rcore-os/rCore.git
synced 2024-11-22 16:16:16 +04:00
Unify trap_handler interfaces
This commit is contained in:
parent
1560e1c3f8
commit
fd59658355
2
kernel/Cargo.lock
generated
2
kernel/Cargo.lock
generated
@ -722,7 +722,7 @@ checksum = "3a385d94f3f62e60445a0adb9ff8d9621faa272234530d4c0f848ec98f88e316"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "trapframe"
|
name = "trapframe"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "git+https://github.com/rcore-os/trapframe-rs?rev=ece17c9#ece17c9aa3995cb67a5e46ec7fbf1dd590936549"
|
source = "git+https://github.com/rcore-os/trapframe-rs?rev=9bf833f#9bf833fcf6a31a9e411f42e4ca1432cba9afe8f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"raw-cpuid",
|
"raw-cpuid",
|
||||||
|
@ -74,7 +74,7 @@ rcore-fs-devfs = { git = "https://github.com/rcore-os/rcore-fs", rev = "517af47"
|
|||||||
rlibc = "1.0"
|
rlibc = "1.0"
|
||||||
smoltcp = { git = "https://github.com/rcore-os/smoltcp", rev = "5bd87c7c", default-features = false, features = ["alloc", "log", "ethernet", "proto-ipv4", "proto-igmp", "socket-icmp", "socket-udp", "socket-tcp", "socket-raw"] }
|
smoltcp = { git = "https://github.com/rcore-os/smoltcp", rev = "5bd87c7c", default-features = false, features = ["alloc", "log", "ethernet", "proto-ipv4", "proto-igmp", "socket-icmp", "socket-udp", "socket-tcp", "socket-raw"] }
|
||||||
spin = "0.5"
|
spin = "0.5"
|
||||||
trapframe = { git = "https://github.com/rcore-os/trapframe-rs", rev = "ece17c9" }
|
trapframe = { git = "https://github.com/rcore-os/trapframe-rs", rev = "9bf833f" }
|
||||||
virtio-drivers = { git = "https://github.com/rcore-os/virtio-drivers", rev = "dfa70e14" }
|
virtio-drivers = { git = "https://github.com/rcore-os/virtio-drivers", rev = "dfa70e14" }
|
||||||
volatile = "0.2"
|
volatile = "0.2"
|
||||||
woke = "0.0.2"
|
woke = "0.0.2"
|
||||||
|
@ -33,8 +33,10 @@ pub unsafe fn restore(flags: usize) {
|
|||||||
///
|
///
|
||||||
/// This function is called from `trap.asm`.
|
/// This function is called from `trap.asm`.
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
pub extern "C" fn trap_handler(scause: Scause, stval: usize, tf: &mut TrapFrame) {
|
pub extern "C" fn trap_handler(tf: &mut TrapFrame) {
|
||||||
use self::scause::{Exception as E, Interrupt as I, Trap};
|
use self::scause::{Exception as E, Interrupt as I, Trap};
|
||||||
|
let scause = scause::read();
|
||||||
|
let stval = stval::read();
|
||||||
trace!("Interrupt @ CPU{}: {:?} ", super::cpu::id(), scause.cause());
|
trace!("Interrupt @ CPU{}: {:?} ", super::cpu::id(), scause.cause());
|
||||||
match scause.cause() {
|
match scause.cause() {
|
||||||
Trap::Interrupt(I::SupervisorExternal) => external(),
|
Trap::Interrupt(I::SupervisorExternal) => external(),
|
||||||
|
Loading…
Reference in New Issue
Block a user