git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed i386 build to x86
[tpg/acess2.git]
/
Kernel
/
arch
/
x86_64
/
proc.c
diff --git
a/Kernel/arch/x86_64/proc.c
b/Kernel/arch/x86_64/proc.c
index
d05e9ae
..
e3d7e90
100644
(file)
--- a/
Kernel/arch/x86_64/proc.c
+++ b/
Kernel/arch/x86_64/proc.c
@@
-594,16
+594,22
@@
Uint Proc_MakeUserStack(void)
void Proc_StartUser(Uint Entrypoint, Uint Base, int ArgC, char **ArgV, int DataSize)
{
void Proc_StartUser(Uint Entrypoint, Uint Base, int ArgC, char **ArgV, int DataSize)
{
- Uint *stack
= (void*)Proc_MakeUserStack()
;
+ Uint *stack;
char **envp;
int i;
Uint delta;
Uint16 ss, cs;
char **envp;
int i;
Uint delta;
Uint16 ss, cs;
- LOG("stack = 0x%x", stack);
// Copy Arguments
// Copy Arguments
- stack = (void*)( Proc_MakeUserStack() - DataSize );
+ stack = (void*)Proc_MakeUserStack();
+ if(!stack) {
+ Log_Error("Proc", "Unable to create user stack!");
+ Threads_Exit(0, -1);
+ }
+ stack -= (DataSize+7)/8;
+ LOG("stack = 0x%x", stack);
+ Log("stack = %p, DataSize = %i", stack, DataSize);
memcpy( stack, ArgV, DataSize );
free(ArgV);
memcpy( stack, ArgV, DataSize );
free(ArgV);
UCC
git Repository :: git.ucc.asn.au