⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 platform.cpp

📁 6410BSP3
💻 CPP
字号:
//// Copyright (c) Samsung Electronics. Co. LTD.  All rights reserved.///*++THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OFANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TOTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR APARTICULAR PURPOSE.*//****************************************************************************//*!** \file        platform.cpp* \brief    Platform specific functionality**//*---------------------------------------------------------------------------* NOTES:*//********************************************************************************* Includes********************************************************************************/#include "platform.h"#include "string.h"#include "stdlib.h"#include "register.h"/********************************************************************************* Macro definitions and enumerations********************************************************************************//********************************************************************************* Type, Structure & Class Definitions********************************************************************************//********************************************************************************* Global Variables********************************************************************************/CRITICAL_SECTION    gles20_fimg_mutex;CRITICAL_SECTION    gles20_chunkalloc_mutex;CRITICAL_SECTION    gles20_open_mutex;/********************************************************************************* Local Function Declarations********************************************************************************//********************************************************************************* Function Definitions********************************************************************************/extern "C" void _gl_asm_memset(unsigned int *_dst, unsigned int c, size_t num);void Plat::initMutex(  CRITICAL_SECTION*  mutex  ,  const char * func_name){#ifdef MULTI_CONTEXT        //printf("trying to lock fimg mutex in func: %s\n", func_name);        InitializeCriticalSection(mutex);#endif    }void  Plat::DeinitMutex(  CRITICAL_SECTION* mutex  ,  const char * func_name){#ifdef MULTI_CONTEXT        //printf("trying to lock fimg mutex in func: %s\n", func_name);        DeleteCriticalSection(mutex);#endif        }void Plat::lock( CRITICAL_SECTION*  mutex , const char * func_name){#ifdef MULTI_CONTEXT        EnterCriticalSection(mutex);        #endif    }void Plat::unlock( CRITICAL_SECTION*  mutex , const char * func_name){#ifdef MULTI_CONTEXT        LeaveCriticalSection(mutex);#endif    }voidPlat::memset_long(void* _dst, unsigned int c, size_t num){    unsigned int *dst = (unsigned int*)(_dst);    // Put dst on 8word (32byte) alignment    while(((unsigned int)dst) % (4*8) != 0) {        *dst = c;        dst++; num--;    }    int temp = num % 8;    num = num - temp;        //calling asm function for memset    _gl_asm_memset(dst, c, num);    // Copy rest of them    if(temp != 0)    {//printf("after _testcpy %d %x %x \n",num,dst,c);        dst = dst+num;        while(temp > 0){            *dst = c;            dst++; temp--;        }    }}voidPlat::memset_long(void* _dst, unsigned int _c, size_t num, unsigned int mask){    if(mask == 0)        return;    if(mask == 0xFFFFFFFF)    {        memset_long(_dst, _c, num);        return;    }        unsigned int *dst = (unsigned int*)(_dst);    unsigned int c = _c & mask;    while(num > 0)    {        *dst = c | (*dst & ~mask);        dst++; num--;    }}void *Plat::memcpy_RTLSIM(void* dst, const void* src, size_t num){    for(unsigned int j = 0; j < (num >> 2) ; j++)    //for(unsigned int j = 0; j < num / 4 ; j++)    {        WRITEREG(((unsigned int *)dst + j),                    ((unsigned int *)src + j));    }    return dst;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -