* Common Binary Loader\r
*/\r
#define DEBUG 0\r
-#include <common.h>\r
+#include <acess.h>\r
#include <binary.h>\r
\r
// === CONSTANTS ===\r
#define BIN_LOWEST MM_USER_MIN // 1MiB\r
#define BIN_GRANUALITY 0x10000 // 64KiB\r
+//! \todo Move 0xBC000000 to mm_virt.h\r
#define BIN_HIGHEST (0xBC000000-BIN_GRANUALITY) // Just below the kernel\r
#define KLIB_LOWEST MM_MODULE_MIN\r
-#define KLIB_GRANUALITY 0x8000 // 32KiB\r
+#define KLIB_GRANUALITY 0x10000 // 32KiB\r
#define KLIB_HIGHEST (MM_MODULE_MAX-KLIB_GRANUALITY)\r
\r
// === TYPES ===\r
// === IMPORTS ===\r
extern int Proc_Clone(Uint *Err, Uint Flags);\r
extern void Threads_SetName(char *Name);\r
+extern char *Threads_GetName(int ID);\r
+extern void Threads_Exit(int, int);\r
extern Uint MM_ClearUser();\r
-extern void Threads_Exit();\r
extern void Proc_StartUser(Uint Entrypoint, Uint *Bases, int ArgC, char **ArgV, char **EnvP, int DataSize);\r
extern tKernelSymbol gKernelSymbols[];\r
extern void gKernelSymbolsEnd;\r
free(savedFile);\r
if(bases[0] == 0)\r
{\r
- Warning("Proc_Execve - Unable to load '%s'", File);\r
- Threads_Exit();\r
+ Warning("Proc_Execve - Unable to load '%s'", Threads_GetName(-1));\r
+ Threads_Exit(0, 0);\r
for(;;);\r
}\r
\r
MM_SetFlags( addr, MM_PFLAG_COW, -1 );\r
}\r
\r
+ //Log("Mapped '%s' to 0x%x", binary->TruePath, base);\r
+ \r
//LOG("*0x%x = 0x%x\n", binary->Pages[0].Virtual, *(Uint*)binary->Pages[0].Virtual);\r
\r
return base;\r
}\r
\r
Warning("[BIN ] 0x%x is an unknown file type. (0x%x 0x%x 0x%x 0x%x)",\r
- Base, ident&0xFF, ident>>8, ident>>16, ident>>24);\r
+ Base, ident&0xFF, (ident>>8)&0xFF, (ident>>16)&0xFF, (ident>>24)&0xFF);\r
return 0;\r
}\r
\r