-
-
Notifications
You must be signed in to change notification settings - Fork 164
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
syscall_handler entry point is wrong, causes page fault in release mode #14
Comments
Removed old cruft of VGA buffer character direct writes. Release mode sort of works now (Issue #14), but causes a page fault for syscalls. Probably something related to reordering in the syscall handler. Everything else works in release mode too.
…stack frames are kept. Otherwise, it will build without stack frames, causing a page fault in the syscall_handler. To fix that page fault, we can use the middle (or the top quarter) of the privilege stack that is passed to enable_syscalls(), rather than using the absolute top of the stack. This closes issue #14.
…stack frames are kept. Otherwise, it will build without stack frames, causing a page fault in the syscall_handler. To fix that page fault, we can use the middle (or the top quarter) of the privilege stack that is passed to enable_syscalls(), rather than using the absolute top of the stack. This closes issue #14.
Update: syscall_handler causes a problem in release mode because positive offsets from the stack pointer are used. The problem and solutions are discussed here in my SO post: https://stackoverflow.com/questions/49125151/code-generation-for-local-stack-variables-in-release-vs-debug-mode Basically, we need to subtract from |
Closing for now, because Theseus is not focused on supporting userspace in Ring 3. |
Removed old cruft of VGA buffer character direct writes. Release mode sort of works now (Issue #14), but causes a page fault for syscalls. Probably something related to reordering in the syscall handler. Everything else works in release mode too.
…stack frames are kept. Otherwise, it will build without stack frames, causing a page fault in the syscall_handler. To fix that page fault, we can use the middle (or the top quarter) of the privilege stack that is passed to enable_syscalls(), rather than using the absolute top of the stack. This closes issue #14.
Removed old cruft of VGA buffer character direct writes. Release mode sort of works now (Issue #14), but causes a page fault for syscalls. Probably something related to reordering in the syscall handler. Everything else works in release mode too.
…stack frames are kept. Otherwise, it will build without stack frames, causing a page fault in the syscall_handler. To fix that page fault, we can use the middle (or the top quarter) of the privilege stack that is passed to enable_syscalls(), rather than using the absolute top of the stack. This closes issue #14.
the page fault occurs in
switch_to()
. Haven't yet found why it occurs, but it is very consistent. Here is the output:We should also find out which commit caused this to occur, and then diff it with the next one. Who wants to do some differential debugging?
The text was updated successfully, but these errors were encountered: