kos_sys/arch/
trap.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// Rust for KallistiOS/Dreamcast
// Copyright (C) 2024 Eric Fradella
// https://dreamcast.rs/

use crate::prelude::*;
use super::irq::irq_context_t;

pub type trapa_t = u8;

pub type trapa_handler = Option<unsafe extern "C" fn(trap: trapa_t,
                                                     context: *mut irq_context_t,
                                                     data: *mut c_void)>;

#[link(name = "kallisti")]
extern "C" {
    pub fn trapa_set_handler(trap: trapa_t, hnd: trapa_handler,
                             data: *mut c_void) -> c_int;
    pub fn trapa_get_handler(trap: trapa_t, data: *mut *mut c_void) -> trapa_handler;
}