diff --git a/src/task/schedule.rs b/src/task/schedule.rs index 2042cd7e8..852c62c48 100644 --- a/src/task/schedule.rs +++ b/src/task/schedule.rs @@ -357,7 +357,7 @@ pub fn create_task_for_module( flags: u16, affinity: Option, ) -> Result<(), SvsmError> { - let mut task = Task::create(module.entry_point(), 0, flags)?; + let mut task = Task::user_create(module.entry_point(), 0, flags)?; task.set_affinity(affinity); task.set_on_switch_hook(Some(task_switch_hook)); diff --git a/src/task/tasks.rs b/src/task/tasks.rs index 19e702979..61f1d7faa 100644 --- a/src/task/tasks.rs +++ b/src/task/tasks.rs @@ -62,7 +62,7 @@ impl From for SvsmError { #[derive(Clone, Copy, Debug)] struct UserParams { - entry_point: usize, + entry_point: extern "C" fn(u64), param: u64, } @@ -281,7 +281,11 @@ impl Task { Ok(task) } - pub fn user_create(entry: usize, param: u64, flags: u16) -> Result, SvsmError> { + pub fn user_create( + entry: extern "C" fn(u64), + param: u64, + flags: u16, + ) -> Result, SvsmError> { // Launch via the user-mode entry point let entry_param = Box::new(UserParams { entry_point: entry,