Add support for the clear stack thread attr.
This commit is contained in:
parent
f1bfbe6216
commit
5be30fb857
1 changed files with 8 additions and 3 deletions
|
@ -92,8 +92,8 @@ enum {
|
|||
PSP_THREAD_ATTR_KERNEL = 0x00001000,
|
||||
PSP_THREAD_ATTR_VFPU = 0x00004000,
|
||||
PSP_THREAD_ATTR_SCRATCH_SRAM = 0x00008000, // Save/restore scratch as part of context???
|
||||
PSP_THREAD_ATTR_NO_FILLSTACK = 0x00100000, // No filling of 0xff (only with PSP_THREAD_ATTR_LOW_STACK?)
|
||||
PSP_THREAD_ATTR_CLEAR_STACK = 0x00200000, // TODO: Clear thread stack when deleted
|
||||
PSP_THREAD_ATTR_NO_FILLSTACK = 0x00100000, // No filling of 0xff.
|
||||
PSP_THREAD_ATTR_CLEAR_STACK = 0x00200000, // Clear thread stack when deleted.
|
||||
PSP_THREAD_ATTR_LOW_STACK = 0x00400000, // Allocate stack from bottom not top.
|
||||
PSP_THREAD_ATTR_USER = 0x80000000,
|
||||
PSP_THREAD_ATTR_USBWLAN = 0xa0000000,
|
||||
|
@ -102,7 +102,7 @@ enum {
|
|||
// TODO: Support more, not even sure what all of these mean.
|
||||
PSP_THREAD_ATTR_USER_MASK = 0xf8f060ff,
|
||||
PSP_THREAD_ATTR_USER_ERASE = 0x78800000,
|
||||
PSP_THREAD_ATTR_SUPPORTED = (PSP_THREAD_ATTR_KERNEL | PSP_THREAD_ATTR_VFPU | PSP_THREAD_ATTR_NO_FILLSTACK | PSP_THREAD_ATTR_LOW_STACK | PSP_THREAD_ATTR_USER)
|
||||
PSP_THREAD_ATTR_SUPPORTED = (PSP_THREAD_ATTR_KERNEL | PSP_THREAD_ATTR_VFPU | PSP_THREAD_ATTR_NO_FILLSTACK | PSP_THREAD_ATTR_CLEAR_STACK | PSP_THREAD_ATTR_LOW_STACK | PSP_THREAD_ATTR_USER)
|
||||
};
|
||||
|
||||
struct NativeCallback
|
||||
|
@ -436,6 +436,11 @@ public:
|
|||
void FreeStack() {
|
||||
if (currentStack.start != 0) {
|
||||
DEBUG_LOG(SCEKERNEL, "Freeing thread stack %s", nt.name);
|
||||
|
||||
if (nt.attr & PSP_THREAD_ATTR_CLEAR_STACK) {
|
||||
Memory::Memset(currentStack.start, 0, currentStack.end - currentStack.start);
|
||||
}
|
||||
|
||||
if (nt.attr & PSP_THREAD_ATTR_KERNEL) {
|
||||
kernelMemory.Free(currentStack.start);
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue