ppc.library emulation history ============================= (kern): changes are relevant for PowerUp kernel emulation only (lib): changes are relevant for M68k library only - 0.6 / ppc.library 46.13 (11.04.99) o This version of the emulation library REQUIRES powerpc.library V15! o (lib) MPSemaphore protection of library base caused a wrong Lib-OpenCnt, which had the effect that the 0.5d library could never be expunged. o (kern) The optional PPC MsgPort was not deleted on task exit. o (kern) Pooled memory, as introduced by WarpOS V4, is supported. The dummy functions are replaced by real ones: PPCAllocPooled(), PPCAllocVecPooled(),PPCCreatePool(), PPCDeletePool(),PPCFreePooled(), PPCFreeVecPooled(). o (kern) PPCFindName(), PPCFindNameSync(). o (kern) Semaphore functions: PPCAttemptSemaphore, PPCAttemptSemaphoreByName, PPCAttemptSemaphoreShared, PPCCreateSemaphore, PPCDeleteSemaphore, PPCObtainSemaphore, PPCObtainSemaphoreByName, PPCObtainSemaphoreShared, PPCReleaseSemaphore. o (kern) Cache support: PPCCacheFlush, PPCCacheFlushAll, PPCCacheInvalid. o (kern) PPCRawDoFmt(). - 0.5d / ppc.library 46.12 (10.04.99) o The first try of the PowerUp Message System Emulation seems to be working! Currently all messages and message ports are allocated in Chip-RAM and the performance is some magnitudes behind the original ppc.library, but it ran successfully through all tests (e.g. msg2, msg2old, msg3, msg5 and msg7 by Ralph Schmidt - the other two have bugs). The code is already prepared to run in Fast-RAM, which I might try in a future release. o (kern) PowerUp Message System supported functions: PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(), PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(), PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage(). o (lib) PowerUp Message System supported functions: PPCCreatePort(), PPCDeletePort(), PPCObtainPort(), PPCReleasePort(), PPCWaitPort(), PPCCreateMessage(), PPCDeleteMessage(), PPCGetMessage(), PPCGetMessageAttr(), PPCReplyMessage(), PPCSendMessage(). o (lib) PPCCreateTask(): PPCTASKTAG_INPUT/OUTPUT/ERRORHANDLE overrule NP_xxx tags. It was the other way around before. New PPCCreateTask() tags: PPCTASKTAG_STACKSIZE, STARTUP_MSG, STARTUP_MSGDATA, STARTUP_MSGLENGTH, STARTUP_MSGID, MSGPORT. o (lib) PPCCreateTask() supports asynchronous PPC tasks. o (lib) PPCDeleteTask() - untested. o (lib) PPCGetTaskAttrs(). New tags: PPCTASKINFOTAG_TASK, VALUEPTR, NAME, PRIORITY, STACKSIZE, INPUTHANDLE, OUTPUTHANDLE, ERRORHANDLE, ELFOBJECT, STARTUP_MSG, STARTUP_MSGDATA, STARTUPMSG_LENGTH, STARTUP_MSGID, STARTUP_MSGPORT, SIGALLOC, SIGWAIT, SIGRECVD, WAITFINISHTASK. The hook and PPC-registers are not supported. Most tags are untested. o (kern) Startup code for PPC tasks creates a PPCMsgPort on demand (tag PPCTASKTAG_MSGPORT). Cleanup code replies the startup message (tag PPCTASKTAG_STARTUP_MSG). o (kern) PPCGetTaskAttr(). New tags supported: PPCTASKTAG_STARTUP_MSG, PPCTASKTAG_STARTUP_MSGDATA, PPCTASKTAG_STARTUP_MSGLENGTH, PPCTASKTAG_STARTUP_MSGID and PPCTASKTAG_MSGPORT. o (lib) PPCCacheInvalidE() and PPCCacheTrashE(). Fixed some bugs from the original ppc.library in these functions. o (lib) When debugging mode for the library is enabled, the names of still unimplemented 68k-functions will be displayed. - 0.5c / ppc.library 46.11 (20.03.99) o Removed PPCAlert(), PPCPutMessage() and PSYSCALL_xxx(), which are not accessible in the original kernel. - 0.5b / ppc.library 46.10 (18.02.99) o There has to be one EXTUSERDATA for every task. Programs using ixemul.elf still don't work. o Increased default stack size used by LoadSeg-patch from 16k to 64k. - 0.5a / ppc.library 46.9 (26.01.99) o The EXTUSERDATA tag is supported. ixemul.elf based programs have a chance to work now. o (kern) PPCGetTaskAttr() got new tags: PPCTASKINFOTAG_NAME, PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_STACKSIZE, PPCTASKTAG_EXTUSERDATA, PPCTASKINFOTAG_USEDSTACKSIZE, PPCTASKINFOTAG_INPUTHANDLE, PPCTASKINFOTAG_OUTPUTHANDLE, PPCTASKINFOTAG_ERRORHANDLE and PPCTASKINFOTAG_ELFOBJECT. o (kern) New function PPCSetTaskAttr(). Supported tags: PPCTASKINFOTAG_NAME, PPCTASKINFOTAG_PRIORITY, PPCTASKTAG_EXTUSERDATA, PPCTASKINFOTAG_INPUTHANDLE, PPCTASKINFOTAG_OUTPUTHANDLE, PPCTASKINFOTAG_ERRORHANDLE. - 0.5 / ppc.library 46.8 (24.01.99) o Possibility to start ELF objects directly under WarpOS without runelf! The emulation library installs its own ELF-LoadSeg patch, which works nearly in the same way as with the original library. Only difference: The message system is not used. This feature was only for vbcc- compatibily anyway, and I know for sure that vbcc no longer needs it. :) o (lib) PPCCacheClearE() is supported, because it's used by the LoadSeg- patch, for example. - 0.4c / ppc.library 46.7 (23.01.99) o (kern) Fixed PPCGetAttr(). It was erroneously implemented as PPCGetAttrs() in 0.4 and had some bugs anyway. Now PLL is much more precise than with the original. o (kern) Task support functions: PPCFindTask(), PPCFinishTask() and PPCGetTaskAttr(). PPCGetTaskAttr currently only knows about the PPCTASKTAG_STACKSIZE tag, others will generate a NULL return value. o Common symbols are no longer ignored. Space in the .bss section will be assigned for them. This was one of the major reasons for most crashes under earlier versions! Unlike vbcc and SAS/C, gcc (or egcs?) uses common symbols (since some time?). o (kern) PowerUp ELF library support: PPCOpenLibrary(), PPCCloseLibrary(), PPCGetLibSymbol(). o New method of starting PPC tasks. Still synchronous only, but the function is already prepared for asynchronous tasks. o (lib) More tags supported by PPCCreateTask(): PPCTASKTAG_ERROR, PPCTASKTAG_BREAKSIGNAL,PPCTASKTAG_INPUTHANDLE,PPCTASKTAG_OUTPUTHANDLE, PPCTASKTAG_ERRRORHANDLE,PPCTASKTAG_NAME,PPCTASKTAG_PRIORITY, PPCTASKTAG_ARG5-ARG8, NP_Input,NP_Output,NP_Error,NP_CloseInput, NP_CloseOutput,NP_CloseError. o (lib) The argument pointer of PPCRunObject() was not recognized! o (lib) All memory allocations are done with 32-byte alignment now. There were some dangeours 4-byte aligments left in earlier versions. - 0.4b / ppc.library 46.6 (05.01.99) o A separate PowerPC task ("ppcemu TimerObjSrv") is launched when the library is initialized. It will be needed to handle the timer jobs and to do PPC task notification. It uses zero cpu-time, when idling. o (kern) TimerObjects: PPCCreateTimerObject, PPCDeleteTimerObject, PPCGetTimerObject, PPCSetTimerObject. o (kern) I/O: PPCInput,PPCOutput. o (kern) Signal support: PPCAllocSignal,PPCFreeSignal,PPCSetSignal, PPCSignal,PPCWait (PPCSignal might not work, because of different Task definitions). o (kern) Version: PPCVersion,PPCRevision. o (kern) TagItem support: PPCFindTagItem,PPCGetTagData,PPCNextTagItem. o (kern) Fixed Add64,Add64p,Sub64,Sub64p (they are still incorrect in original ppc.libraray!) o (kern) Improved Cmp64,Cmp64p. - 0.4a / ppc.library 46.5 (19.12.98) o (kern) Fixed PPCNeg64,Neg64p,Sub64,Sub64p,Mulu64,Mulu64p,Muls64,Muls64p. o (lib) Private PPCDebugMode function. - 0.4 / ppc.library 46.4 (27.11.98) o Included the *names* of all kernel functions from ppc.library V46.19. As a consequence the library version was bumped to 46. o The PowerPC type, cpu clock and bus clock will be determined when initializing the library base. o PPCGetAttr (without PPCINFOTAG_EXCEPTIONHOOK) for M68k lib and PPC kernel. o (lib) PPCCreateTask: r3 and r4 default to zero to avoid startup code crashes when checking for args via r3 (PPCLoad-fix). o (lib) Read/write data by PowerPC: PPCReadByte,WriteByte,ReadWord, WriteWord,ReadLong,WriteLong,WriteLongFlush. o (kern) The kernel functions no longer need to init the TOC pointer. o (kern) Included additional 64-bit and gcc-support functions of V46.19: PPCAnd64,Asl64,Lsl64,Asr64,Lsr64,Or64,Xor64,DivRem64, __adddi3,__anddi3,__ashldi3,__ashrdi3,__cmpdi2,__divdi3,__fixdfdi, __fixsfdi,__fixunsdfdi,__fixunssfdi,__floatdidf,__floatdisf, __floatunsdidf,__iordi3,__lmulq,__lshldi3,__lshrdi3,__moddi3, __muldi3,__negdi2,__qdivrem,__subdi3,__ucmpdi2,__udivdi3, __umoddi3,__xordi3, memcpy,strcmp,strcpy - 0.3 / ppc.library 45.3 (20.11.98) o (kern) List functions: PPCAddHead/Sync, AddTail/Sync, Enqueue/Sync, Insert/Sync, NewList, RemHead/Sync, Remove/Sync, RemTail/Sync and PPCNextTagItem. - 0.2 / ppc.library 45.2 (16.11.98) o (kern) 64-bit support functions: PPCAdd64, Add64p, Cmp64, Cmp64p, Divs64, Divs64p, Divu64, Divu64p, Mods64, Mods64p, Modu64, Modu64p, Muls64, Muls64p, Mulu64, Mulu64p, Neg64, Neg64p, Sub64, Sub64p - 0.1 / ppc.library 45.1 (15.11.98) o First partially working ppc.library emulation. Synchronous PPC tasks, started by runelf, which only use the basic PowerUp kernel functions for I/O, memory and context-switch seem to work fine. o (lib) Supported 68k functions: PPCLoadObject,PPCUnloadObject,PPCRunObject,PPCAllocMem,PPCFreeMem, PPCAllocVec,PPCFreeVec,PPCCreateTask(only synchronous), PPCGetObjectAttrs,PPCLoadObjectTagList o (kern) Supported PowerUp kernel functions: PPCAllocMem,PPCAllocPooled(dummy),PPCAllocVec, PPCAllocVecPooled(dummy),PPCCallM68k,PPCCallOS,PPCClose, PPCCreatePool(dummy),PPCDeletePool(dummy),PPCFreeMem, PPCFreePooled(dummy),PPCFreeVec,PPCFreeVecPooled(dummy), PPCOpen,PPCRead,PPCSeek,PPCWrite. Pooled memory functions currently use the normal Alloc/FreeVec functions, because pooled memory support is still missing in WarpOS. - 0.0 / ppc.library 45.0 (31.10.98) o Started after getting a hint that the last author abondoned his project.