x86: x86-32: pin static inline syscall invoke functions
Although they are marked as an inline functions, the compiler may decide not to inline them which would result in them being outside the pinned text section. Since these functions are required for userspace to work correctly, pin them in physical memory. Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This commit is contained in:
parent
c2a01af003
commit
90ddb35d44
1 changed files with 9 additions and 0 deletions
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <zephyr/types.h>
|
||||
#include <stdbool.h>
|
||||
#include <linker/sections.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
@ -34,6 +35,7 @@ extern "C" {
|
|||
* z_x86_syscall_entry_stub in userspace.S
|
||||
*/
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2,
|
||||
uintptr_t arg3, uintptr_t arg4,
|
||||
uintptr_t arg5, uintptr_t arg6,
|
||||
|
@ -53,6 +55,7 @@ static inline uintptr_t arch_syscall_invoke6(uintptr_t arg1, uintptr_t arg2,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2,
|
||||
uintptr_t arg3, uintptr_t arg4,
|
||||
uintptr_t arg5,
|
||||
|
@ -68,6 +71,7 @@ static inline uintptr_t arch_syscall_invoke5(uintptr_t arg1, uintptr_t arg2,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2,
|
||||
uintptr_t arg3, uintptr_t arg4,
|
||||
uintptr_t call_id)
|
||||
|
@ -82,6 +86,7 @@ static inline uintptr_t arch_syscall_invoke4(uintptr_t arg1, uintptr_t arg2,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2,
|
||||
uintptr_t arg3,
|
||||
uintptr_t call_id)
|
||||
|
@ -95,6 +100,7 @@ static inline uintptr_t arch_syscall_invoke3(uintptr_t arg1, uintptr_t arg2,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2,
|
||||
uintptr_t call_id)
|
||||
{
|
||||
|
@ -108,6 +114,7 @@ static inline uintptr_t arch_syscall_invoke2(uintptr_t arg1, uintptr_t arg2,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke1(uintptr_t arg1,
|
||||
uintptr_t call_id)
|
||||
{
|
||||
|
@ -121,6 +128,7 @@ static inline uintptr_t arch_syscall_invoke1(uintptr_t arg1,
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline uintptr_t arch_syscall_invoke0(uintptr_t call_id)
|
||||
{
|
||||
uint32_t ret;
|
||||
|
@ -133,6 +141,7 @@ static inline uintptr_t arch_syscall_invoke0(uintptr_t call_id)
|
|||
return ret;
|
||||
}
|
||||
|
||||
__pinned_func
|
||||
static inline bool arch_is_user_context(void)
|
||||
{
|
||||
int cs;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue