#
95e97463 |
|
14-Sep-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel: add generic wrapper for accessing user memory This patch adds user_access() which can be used to gracefully handle page faults that may happen when accessing user memory. It is used by arch_cpu_user{memcpy, memset, strlcpy}() to allow using optimized functions from the standard library. Currently only x64 uses this, but nothing really is arch specific here. Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
|
#
5af6169b |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86[-64]: Fix arch_cpu_user_strlcpy() for small buffers The case for small buffers was broken, since scasb operates on edi/rdi, not esi/rsi.
|
#
bcbf22a3 |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86[-64]: Fix arch_cpu_user_strlcpy() for small buffers The case for small buffers was broken, since scasb operates on edi/rdi, not esi/rsi.
|
#
211f7132 |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: move x86_userspace_thread_exit() from user stack to commpage x86_userspace_thread_exit() is a stub originally placed at the bottom of each thread user stack that ensures any thread invokes exit_thread() upon returning from its main higher level function. Putting anything that is expected to be executed on a stack causes problems when implementing data execution prevention. Code of x86_userspace_thread_exit() is now moved to commpage which seems to be much more appropriate place for it.
|
#
b5c9d24a |
|
09-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented threading for x86_64. * Thread creation and switching is working fine, however threads do not yet get interrupted because I've not implemented hardware interrupt handling yet (I'll do that next). * I've made some changes to struct iframe: I've removed the e/r prefixes from the member names for both 32/64, so now they're just named ip, ax, bp, etc. This makes it easier to write code that works with both 32/64 without having to deal with different iframe member names.
|
#
4304bb98 |
|
04-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Added arch_cpu.cpp to the x86_64 build. * Some things are currently ifndef'd out completely for x86_64 because they aren't implemented, there's a few other ifdef's to handle x86_64 differences but most of the code works unchanged. * Renamed some i386_* functions to x86_*. * Added a temporary method for setting the current thread on x86_64 (a global variable, not SMP safe). This will be changed to be done via the GS segment but I've not implemented that yet.
|
#
4e8fbfb2 |
|
03-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
x86_{read,write}_cr{0,4} can just be implemented as macros, put an x86_ prefix on the other read/write macros for consistency.
|
#
95e97463d265c9f4a6e43265ef0f1f63a0825b21 |
|
14-Sep-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel: add generic wrapper for accessing user memory This patch adds user_access() which can be used to gracefully handle page faults that may happen when accessing user memory. It is used by arch_cpu_user{memcpy, memset, strlcpy}() to allow using optimized functions from the standard library. Currently only x64 uses this, but nothing really is arch specific here. Signed-off-by: Paweł Dziepak <pdziepak@quarnos.org>
|
#
5af6169bb2afb3dd70839d2439802ba10999e35c |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86[-64]: Fix arch_cpu_user_strlcpy() for small buffers The case for small buffers was broken, since scasb operates on edi/rdi, not esi/rsi.
|
#
bcbf22a316baf9c159b286ca774b27b21102b53f |
|
05-May-2013 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
x86[-64]: Fix arch_cpu_user_strlcpy() for small buffers The case for small buffers was broken, since scasb operates on edi/rdi, not esi/rsi.
|
#
211f71325a1c2c1f3c7d0efabe01506144fcd6ba |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: move x86_userspace_thread_exit() from user stack to commpage x86_userspace_thread_exit() is a stub originally placed at the bottom of each thread user stack that ensures any thread invokes exit_thread() upon returning from its main higher level function. Putting anything that is expected to be executed on a stack causes problems when implementing data execution prevention. Code of x86_userspace_thread_exit() is now moved to commpage which seems to be much more appropriate place for it.
|
#
b5c9d24abcc3599375153ed310b495ea944d46a0 |
|
09-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented threading for x86_64. * Thread creation and switching is working fine, however threads do not yet get interrupted because I've not implemented hardware interrupt handling yet (I'll do that next). * I've made some changes to struct iframe: I've removed the e/r prefixes from the member names for both 32/64, so now they're just named ip, ax, bp, etc. This makes it easier to write code that works with both 32/64 without having to deal with different iframe member names.
|
#
4304bb9894335fe5e5bd667a1f27dc7605c2e5b9 |
|
04-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Added arch_cpu.cpp to the x86_64 build. * Some things are currently ifndef'd out completely for x86_64 because they aren't implemented, there's a few other ifdef's to handle x86_64 differences but most of the code works unchanged. * Renamed some i386_* functions to x86_*. * Added a temporary method for setting the current thread on x86_64 (a global variable, not SMP safe). This will be changed to be done via the GS segment but I've not implemented that yet.
|
#
4e8fbfb2d158de7b1cadd1c060acee51a7d67309 |
|
03-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
x86_{read,write}_cr{0,4} can just be implemented as macros, put an x86_ prefix on the other read/write macros for consistency.
|