X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Fbinary.c;h=e96da76d80346704a2dc627cd1db416670615bae;hb=c7c5c4dbeb7b298675856eebb36084c92e989d98;hp=d6960e3fa3b58bee0dd5fc6aab12e3a5a139f823;hpb=a048f2a350824bb7e0b8191bcf16addd1543b882;p=tpg%2Facess2.git diff --git a/Kernel/binary.c b/Kernel/binary.c index d6960e3f..e96da76d 100644 --- a/Kernel/binary.c +++ b/Kernel/binary.c @@ -2,16 +2,17 @@ * Acess2 * Common Binary Loader */ -#define DEBUG 1 +#define DEBUG 0 #include #include // === CONSTANTS === #define BIN_LOWEST MM_USER_MIN // 1MiB #define BIN_GRANUALITY 0x10000 // 64KiB +//! \todo Move 0xBC000000 to mm_virt.h #define BIN_HIGHEST (0xBC000000-BIN_GRANUALITY) // Just below the kernel #define KLIB_LOWEST MM_MODULE_MIN -#define KLIB_GRANUALITY 0x8000 // 32KiB +#define KLIB_GRANUALITY 0x10000 // 32KiB #define KLIB_HIGHEST (MM_MODULE_MAX-KLIB_GRANUALITY) // === TYPES === @@ -24,8 +25,9 @@ typedef struct sKernelBin { // === IMPORTS === extern int Proc_Clone(Uint *Err, Uint Flags); extern void Threads_SetName(char *Name); +extern char *Threads_GetName(int ID); +extern void Threads_Exit(int, int); extern Uint MM_ClearUser(); -extern void Threads_Exit(); extern void Proc_StartUser(Uint Entrypoint, Uint *Bases, int ArgC, char **ArgV, char **EnvP, int DataSize); extern tKernelSymbol gKernelSymbols[]; extern void gKernelSymbolsEnd; @@ -145,8 +147,8 @@ int Proc_Execve(char *File, char **ArgV, char **EnvP) free(savedFile); if(bases[0] == 0) { - Warning("Proc_Execve - Unable to load '%s'", File); - Threads_Exit(); + Warning("Proc_Execve - Unable to load '%s'", Threads_GetName(-1)); + Threads_Exit(0, 0); for(;;); } @@ -321,6 +323,8 @@ Uint Binary_MapIn(tBinary *binary) MM_SetFlags( addr, MM_PFLAG_COW, -1 ); } + //Log("Mapped '%s' to 0x%x", binary->TruePath, base); + //LOG("*0x%x = 0x%x\n", binary->Pages[0].Virtual, *(Uint*)binary->Pages[0].Virtual); return base; @@ -724,7 +728,7 @@ Uint Binary_Relocate(void *Base) } Warning("[BIN ] 0x%x is an unknown file type. (0x%x 0x%x 0x%x 0x%x)", - Base, ident&0xFF, ident>>8, ident>>16, ident>>24); + Base, ident&0xFF, (ident>>8)&0xFF, (ident>>16)&0xFF, (ident>>24)&0xFF); return 0; }