diff options
Diffstat (limited to 'board/MAI/bios_emulator/scitech/src/common/galinux.c')
-rw-r--r-- | board/MAI/bios_emulator/scitech/src/common/galinux.c | 148 |
1 files changed, 148 insertions, 0 deletions
diff --git a/board/MAI/bios_emulator/scitech/src/common/galinux.c b/board/MAI/bios_emulator/scitech/src/common/galinux.c new file mode 100644 index 0000000..cbd9d7f --- /dev/null +++ b/board/MAI/bios_emulator/scitech/src/common/galinux.c @@ -0,0 +1,148 @@ +/**************************************************************************** +* +* SciTech Nucleus Graphics Architecture +* +* Copyright (C) 1991-1998 SciTech Software, Inc. +* All rights reserved. +* +* ====================================================================== +* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| +* | | +* |This copyrighted computer code contains proprietary technology | +* |owned by SciTech Software, Inc., located at 505 Wall Street, | +* |Chico, CA 95928 USA (http://www.scitechsoft.com). | +* | | +* |The contents of this file are subject to the SciTech Nucleus | +* |License; you may *not* use this file or related software except in | +* |compliance with the License. You may obtain a copy of the License | +* |at http://www.scitechsoft.com/nucleus-license.txt | +* | | +* |Software distributed under the License is distributed on an | +* |"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or | +* |implied. See the License for the specific language governing | +* |rights and limitations under the License. | +* | | +* |REMOVAL OR MODIFICATION OF THIS HEADER IS STRICTLY PROHIBITED BY LAW| +* ====================================================================== +* +* Language: ANSI C +* Environment: Linux +* +* Description: OS specific Nucleus Graphics Architecture services for +* the Linux operating system. +* +****************************************************************************/ + +#include "nucleus/graphics.h" +#include <sys/time.h> + +/*---------------------------- Global Variables ---------------------------*/ + +static ibool haveRDTSC; + +/*-------------------------- Implementation -------------------------------*/ + +/**************************************************************************** +PARAMETERS: +path - Local path to the Nucleus driver files. + +REMARKS: +This function is used by the application program to override the location +of the Nucleus driver files that are loaded. Normally the loader code +will look in the system Nucleus directories first, then in the 'drivers' +directory relative to the current working directory, and finally relative +to the MGL_ROOT environment variable. +****************************************************************************/ +void NAPI GA_setLocalPath( + const char *path) +{ + PM_setLocalBPDPath(path); +} + +/**************************************************************************** +RETURNS: +Pointer to the system wide PM library imports, or the internal version if none + +REMARKS: +In order to support deploying new Nucleus drivers that may require updated +PM library functions, we check here to see if there is a system wide version +of the PM functions available. If so we return those functions for use with +the system wide Nucleus drivers, otherwise the compiled in version of the PM +library is used with the application local version of Nucleus. +****************************************************************************/ +PM_imports * NAPI GA_getSystemPMImports(void) +{ + // TODO: We may very well want to provide a system shared library + // that eports the PM functions required by the Nucleus library + // for Linux here. That will eliminate fatal errors loading new + // drivers on Linux! + return &_PM_imports; +} + +/**************************************************************************** +REMARKS: +Nothing special for this OS. +****************************************************************************/ +ibool NAPI GA_getSharedExports( + GA_exports *gaExp, + ibool shared) +{ + (void)gaExp; + (void)shared; + return false; +} + +#ifndef TEST_HARNESS +/**************************************************************************** +REMARKS: +Nothing special for this OS +****************************************************************************/ +ibool NAPI GA_queryFunctions( + GA_devCtx *dc, + N_uint32 id, + void _FAR_ *funcs) +{ + return __GA_exports.GA_queryFunctions(dc,id,funcs); +} + +/**************************************************************************** +REMARKS: +Nothing special for this OS +****************************************************************************/ +ibool NAPI REF2D_queryFunctions( + REF2D_driver *ref2d, + N_uint32 id, + void _FAR_ *funcs) +{ + return __GA_exports.REF2D_queryFunctions(ref2d,id,funcs); +} +#endif + +/**************************************************************************** +REMARKS: +This function initialises the high precision timing functions for the +Nucleus loader library. +****************************************************************************/ +ibool NAPI GA_TimerInit(void) +{ + if (_GA_haveCPUID() && (_GA_getCPUIDFeatures() & CPU_HaveRDTSC) != 0) + haveRDTSC = true; + return true; +} + +/**************************************************************************** +REMARKS: +This function reads the high resolution timer. +****************************************************************************/ +void NAPI GA_TimerRead( + GA_largeInteger *value) +{ + if (haveRDTSC) + _GA_readTimeStamp(value); + else { + struct timeval t; + gettimeofday(&t, NULL); + value->low = t.tv_sec*1000000 + t.tv_usec; + value->high = 0; + } +} |