[project @ 2004-09-05 19:12:20 by panne]
[ghc-hetmet.git] / ghc / rts / Adjustor.c
index da8951c..3b93989 100644 (file)
@@ -61,7 +61,7 @@ typedef enum {
  * TODO: Can the code span more than one page? If yes, we need to make two
  * pages executable!
  */
-static rtsBool
+static void
 execPage (void* addr, pageMode mode)
 {
 #if defined(i386_TARGET_ARCH) && defined(_WIN32) && 0
@@ -75,16 +75,11 @@ execPage (void* addr, pageMode mode)
                          sInfo.dwPageSize,
                          ( mode == pageExecuteReadWrite ? PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ),
                          &dwOldProtect) == 0 ) {
-# if 1
        DWORD rc = GetLastError();
-       prog_belch("execPage: failed to protect 0x%p; error=%lu; old protection: %lu\n", addr, rc, dwOldProtect);
-# endif
-       return rtsFalse;
+       barf("execPage: failed to protect 0x%p; error=%lu; old protection: %lu\n", addr, rc, dwOldProtect);
     }
-    return rtsTrue;
 #else
     (void)addr;   (void)mode;   /* keep gcc -Wall happy */
-    return rtsTrue;
 #endif
 }
 
@@ -506,7 +501,7 @@ freeHaskellFunctionPtr(void* ptr)
 #if defined(i386_TARGET_ARCH)
  if ( *(unsigned char*)ptr != 0x68 &&
       *(unsigned char*)ptr != 0x58 ) {
-   prog_belch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
+   errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
    return;
  }
 
@@ -518,7 +513,7 @@ freeHaskellFunctionPtr(void* ptr)
  }    
 #elif defined(sparc_TARGET_ARCH)
  if ( *(unsigned long*)ptr != 0x9C23A008UL ) {
-   prog_belch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
+   errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
    return;
  }
 
@@ -526,7 +521,7 @@ freeHaskellFunctionPtr(void* ptr)
  freeStablePtr(*((StgStablePtr*)((unsigned long*)ptr + 11)));
 #elif defined(alpha_TARGET_ARCH)
  if ( *(StgWord64*)ptr != 0xa77b0018a61b0010L ) {
-   prog_belch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
+   errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
    return;
  }
 
@@ -534,7 +529,7 @@ freeHaskellFunctionPtr(void* ptr)
  freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 0x10)));
 #elif defined(powerpc_TARGET_ARCH)
  if ( *(StgWord*)ptr != 0x7d0a4378 ) {
-   prog_belch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
+   errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
    return;
  }
  freeStablePtr(*((StgStablePtr*)((unsigned char*)ptr + 4*12)));
@@ -543,7 +538,7 @@ freeHaskellFunctionPtr(void* ptr)
  StgWord64 *code = (StgWord64 *)(fdesc+1);
 
  if (fdesc->ip != (StgWord64)code) {
-   prog_belch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
+   errorBelch("freeHaskellFunctionPtr: not for me, guv! %p\n", ptr);
    return;
  }
  freeStablePtr((StgStablePtr)code[16]);
@@ -563,7 +558,7 @@ freeHaskellFunctionPtr(void* ptr)
  *
  * Perform initialisation of adjustor thunk layer (if needed.)
  */
-rtsBool
+void
 initAdjustor(void)
 {
 #if defined(i386_TARGET_ARCH)
@@ -594,5 +589,4 @@ initAdjustor(void)
 
   execPage(obscure_ccall_ret_code, pageExecuteRead);
 #endif
-  return rtsTrue;
 }