Changeset 3598


Ignore:
Timestamp:
Oct 4, 2007, 8:46:12 PM (18 years ago)
Author:
bird
Message:

hacking darwin.

Location:
trunk/kStuff
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/kStuff/Config.kmk

    r3596 r3598  
    6363TEMPLATE_kStuff_ASFLAGS.win.amd64= -f win64 -g cv8
    6464
     65TEMPLATE_kStuff_CFLAGS.darwin    = -g -fno-common
     66TEMPLATE_kStuff_CFLAGS.freebsd   = -g
     67TEMPLATE_kStuff_CFLAGS.linux     = -g
     68TEMPLATE_kStuff_CFLAGS.os2       = -g
     69TEMPLATE_kStuff_CFLAGS.win       = -Zi -Zl -MD -W3 -GF -GR-
     70ifneq ($(BUILD_TYPE),debug)
     71TEMPLATE_kStuff_CFLAGS.freebsd  += -O3
     72TEMPLATE_kStuff_CFLAGS.linux    += -O3
     73TEMPLATE_kStuff_CFLAGS.os2      += -O3
     74TEMPLATE_kStuff_CFLAGS.win      += -O2xtg -Oi -Ob2
     75else
     76TEMPLATE_kStuff_CFLAGS.win      += -Od
     77endif
     78
     79TEMPLATE_kStuff_CXXFLAGS.darwin  = -g -fno-common
    6580TEMPLATE_kStuff_CXXFLAGS.freebsd = -g
    6681TEMPLATE_kStuff_CXXFLAGS.linux   = -g
  • trunk/kStuff/include/k/kCpu.h

    r3585 r3598  
    5353#endif
    5454
    55 KCPU_DECL(void)     kCpuGetArchAndCpu(PKCPUARCH penmArch, PKCPU penmCpu);
    56 KCPU_DECL(KBOOL)    kCpuCompare(KCPUARCH enmCodeArch, KCPU enmCodeCpu, KCPUARCH enmArch, KCPU enmCpu);
     55KCPU_DECL(void) kCpuGetArchAndCpu(PKCPUARCH penmArch, PKCPU penmCpu);
     56KCPU_DECL(int)  kCpuCompare(KCPUARCH enmCodeArch, KCPU enmCodeCpu, KCPUARCH enmArch, KCPU enmCpu);
    5757
    5858#ifdef __cplusplus
  • trunk/kStuff/include/k/kDefs.h

    r3585 r3598  
    7575# elif defined(__FreeBSD__) /*??*/
    7676#  define K_OS      K_OS_FREEBSD
     77# elif defined(__gnu_linux__)
     78#  define K_OS      K_OS_LINUX
    7779# elif defined(__NetBSD__) /*??*/
    7880#  define K_OS      K_OS_NETBSD
  • trunk/kStuff/kCpu/kCpuCompare.c

    r3585 r3598  
    4444 * @param   enmCpu      The cpu to run it on.
    4545 */
    46 KCPU_DECL(KBOOL) kCpuCompare(KCPUARCH enmCodeArch, KCPU enmCodeCpu, KCPUARCH enmArch, KCPU enmCpu)
     46KCPU_DECL(int) kCpuCompare(KCPUARCH enmCodeArch, KCPU enmCodeCpu, KCPUARCH enmArch, KCPU enmCpu)
    4747{
    4848    /*
  • trunk/kStuff/kDbg/kDbgModWinDbgHelp.cpp

    r3557 r3598  
    470470        DWORD Err = GetLastError();
    471471        int rc = kdbgModDHConvWinError(Err);
     472        InterlockedExchange(&s_lLock, 0);
    472473        kDbgAssertMsgFailedReturn(("Failed to load '%s', Err=%d rc=%d\n", szPath, Err, rc), rc);
    473474    }
     
    521522            if (!rc)
    522523            {
    523                 //InterlockedExchange(&g_hDbgHelp, hmod);
    524524                g_hDbgHelp = hmod;
    525525                Sleep(1);
  • trunk/kStuff/kDbg/kDbgModule.cpp

    r3588 r3598  
    4343#if K_OS == K_OS_WINDOWS
    4444    &g_kDbgModWinDbgHelpOpen,
    45 #else
    46 #error huh?s
    4745#endif
    48 //    &g_kDbgModLdr,
     46    &g_kDbgModLdr,
    4947//    &g_kDbgModCv8,
    5048//    &g_kDbgModDwarf,
  • trunk/kStuff/kLdr/Makefile.kmk

    r3585 r3598  
    147147kLdrStatic_SDKS.win = WINPSDK W2K3DDK
    148148kLdrStatic_INCS := $(PATH_SUB_CURRENT) $(PATH_SUB_ROOT)/include
     149kLdrStatic_DEFS.darwin = __DARWIN__
     150kLdrStatic_DEFS.os2 = __OS2__
    149151kLdrStatic_DEFS.win = __WIN__
    150 kLdrStatic_DEFS.os2 = __OS2__
    151 kLdrStatic_DEFS.darwin = __DARWIN__
    152152kLdrStatic_SOURCES = $(kLdr_SOURCES)
    153153
  • trunk/kStuff/kLdr/kLdrDyldFind.c

    r3582 r3598  
    304304    if (!kLdrDyldAppDir[0])
    305305    {
    306 #if defined(__OS2__)
     306#if K_OS == K_OS_DARWIN
     307        /** @todo implement this! */
     308        kLdrDyldWindowsAppDir[0] = kLdrDyldAppDir[0] = '.';
     309        kLdrDyldWindowsAppDir[1] = kLdrDyldAppDir[1] = '\0';
     310
     311#elif K_OS == K_OS_OS2
    307312        PPIB pPib;
    308313        PTIB pTib;
     
    791796     */
    792797    if (*penmSearch == KLDRDYLD_SEARCH_HOST)
    793 #if defined(__OS2__)
     798#if K_OS == K_OS_DARWIN
     799        /** @todo *penmSearch = KLDRDYLD_SEARCH_DARWIN; */
     800        *penmSearch = KLDRDYLD_SEARCH_UNIX_COMMON;
     801#elif K_OS == K_OS_OS2
    794802        *penmSearch = KLDRDYLD_SEARCH_OS2;
    795803#elif K_OS == K_OS_WINDOWS
  • trunk/kStuff/kLdr/kLdrDyldOS.c

    r3582 r3598  
    4343
    4444#else
    45 # error "port me"
     45# include <k/kHlpAlloc.h>
     46
    4647#endif
    4748
     
    7677
    7778#else
    78 # error "Port me"
     79    void *pv;
     80
     81    if (!cb)
     82        cb = 1 * 1024*1024; /* 1MB */
     83
     84    if (!kHlpPageAlloc(&pv, cb, KPROT_READWRITE, K_FALSE))
     85        return pv;
     86    return NULL;
    7987#endif
    8088}
     
    92100int kldrDyldOSStartExe(KUPTR uMainEPAddress, void *pvStack, KSIZE cbStack)
    93101{
    94 #if defined(__OS2__)
    95 
    96 #elif K_OS == K_OS_WINDOWS
     102#if K_OS == K_OS_WINDOWS
    97103    /*
    98104     * Invoke the entrypoint on the current stack for now.
     
    109115    for (;;)
    110116        TerminateProcess(GetCurrentProcess(), rc);
    111 
    112 /*#elif defined(__NT__)*/
    113 #else
    114 # error "Port me"
    115117#endif
    116118
     
    126128    kldrDyldDoLoadExe(pExe);
    127129}
     130
  • trunk/kStuff/kLdr/kLdrDyldSem.c

    r3577 r3598  
    3131#include <k/kDefs.h>
    3232#include <k/kHlpSem.h>
     33#include <k/kHlpAssert.h>
    3334
    34 #if K_OS == K_OS_OS2
     35#if K_OS == K_OS_DARWIN
     36# include <mach/mach.h>
     37
     38#elif K_OS == K_OS_OS2
    3539# define INCL_BASE
    3640# define INCL_ERRORS
    3741# include <os2.h>
     42
    3843#elif  K_OS == K_OS_WINDOWS
    3944# include <Windows.h>
     45
    4046#else
    4147# error "port me"
     
    4753*   Global Variables                                                           *
    4854*******************************************************************************/
    49 #if K_OS == K_OS_OS2
     55#if K_OS == K_OS_DARWIN
     56/** The loader sempahore. */
     57static semaphore_t      g_Semaphore = MACH_PORT_NULL;
     58
     59#elif K_OS == K_OS_OS2
    5060/** The loader sempahore. */
    5161static HMTX             g_hmtx;
     
    5464/** The loader sempahore. */
    5565static CRITICAL_SECTION g_CritSect;
     66
    5667#else
    5768# error "port me"
     
    6475 * @returns 0 on success, non-zero OS status code on failure.
    6576 */
    66 int     kLdrDyldSemInit(void)
     77int kLdrDyldSemInit(void)
    6778{
    68 #if K_OS == K_OS_OS2
     79#if K_OS == K_OS_DARWIN
     80    kern_return_t krc;
     81
     82    krc = semaphore_create(mach_task_self(), &g_Semaphore, SYNC_POLICY_FIFO, 0);
     83    if (krc != KERN_SUCCESS)
     84        return krc;
     85
     86#elif K_OS == K_OS_OS2
    6987    APIRET rc;
    7088    g_hmtx = NULLHANDLE;
     
    86104 * Terminates the loader semaphore.
    87105 */
    88 void    kLdrDyldSemTerm(void)
     106void kLdrDyldSemTerm(void)
    89107{
    90 #if K_OS == K_OS_OS2
     108#if K_OS == K_OS_DARWIN
     109    kern_return_t krc;
     110    semaphore_t Semaphore = g_Semaphore;
     111    g_Semaphore = MACH_PORT_NULL;
     112    krc = semaphore_destroy(mach_task_self(), Semaphore);
     113    kHlpAssert(krc == KERN_SUCCESS); (void)krc;
     114
     115#elif K_OS == K_OS_OS2
    91116    HMTX hmtx = g_hmtx;
    92117    g_hmtx = NULLHANDLE;
     
    108133 * @returns 0 on success, non-zero OS status code on failure.
    109134 */
    110 int     kLdrDyldSemRequest(void)
     135int kLdrDyldSemRequest(void)
    111136{
    112 #if K_OS == K_OS_OS2
     137#if K_OS == K_OS_DARWIN
     138    /* not sure about this... */
     139    kern_return_t krc;
     140    do krc = semaphore_wait(g_Semaphore);
     141    while (krc == KERN_ABORTED);
     142    if (krc == KERN_SUCCESS)
     143        return 0;
     144    return krc;
     145
     146#elif K_OS == K_OS_OS2
    113147    APIRET rc = DosRequestMutexSem(g_hmtx, 5000);
    114148    if (rc == ERROR_TIMEOUT || rc == ERROR_SEM_TIMEOUT || rc == ERROR_INTERRUPT)
     
    140174 * The caller is responsible for making sure it's the semaphore owner!
    141175 */
    142 void    kLdrDyldSemRelease(void)
     176void kLdrDyldSemRelease(void)
    143177{
    144 #if K_OS == K_OS_OS2
     178#if K_OS == K_OS_DARWIN
     179    /* not too sure about this... */
     180    kern_return_t krc = semaphore_signal(g_Semaphore);
     181    kHlpAssert(krc == KERN_SUCCESS); (void)krc;
     182
     183#elif K_OS == K_OS_OS2
    145184    APIRET rc = DosReleaseMutexSem(g_hmtx);
    146185    kHlpAssert(!rc); (void)rc;
     
    152191# error "port me"
    153192#endif
    154 
    155193}
    156194
Note: See TracChangeset for help on using the changeset viewer.