亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? init.c

?? wince 6 r2 bsp template
?? C
字號(hào):
//
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//
// Use of this sample source code is subject to the terms of the Microsoft
// license agreement under which you licensed this sample source code. If
// you did not accept the terms of the license agreement, you are not
// authorized to use this sample source code. For the terms of the license,
// please see the license agreement between you and Microsoft or, if applicable,
// see the LICENSE.RTF on your install media or the root of your tools installation.
// THE SAMPLE SOURCE CODE IS PROVIDED "AS IS", WITH NO WARRANTIES OR INDEMNITIES.
//
#include <windows.h>
#include <winnt.h>
#include <oemglobal.h>

// Init.c
// The comments in this file will vary from OS version to version.
// Look up OEMGlobal on MSDN for a full reference of OAL functions,
// or see public\common\oak\inc\oemglobal.h
//
// All OAL functions in the template BSP fall into one of three categories:
// REQUIRED - you must implement this function for kernel functionality
// OPTIONAL - you may implement this function to enable specific functionality
// CUSTOM   - this function is a helper function specific to this BSP
//
// OEMGlobal is initialized by the kernel to use default function names
// for all required functions.  See the comments in
// public\common\oak\inc\oemglobal.h for a concise listing of the default
// function names along with their required/optional status.
//
// In this BSP all of the functions are implemented using the default
// function names.  However, with the exception of the OEMInitDebugSerial
// and OEMInit functions, you can change these function names from the
// defaults by pointing the kernel calls to use a different name - see
// RemapOALGlobalFunctions for an example of how to do this.  
//

// custom BSP functions
void RemapOALGlobalFunctions(void);
void SetOALGlobalVariables(void);

// forward declarations of optional OAL functions
void OEMWriteDebugByte(BYTE bChar);
void OEMWriteDebugString(LPCWSTR pszStr);
int OEMReadDebugByte(void);
void OEMWriteDebugLED(WORD wIndex, DWORD dwPattern);
void OEMInitClock(void);
BOOL OEMQueryPerformanceCounter(LARGE_INTEGER* lpPerformanceCount);
BOOL OEMQueryPerformanceFrequency(LARGE_INTEGER* lpFrequency);
void OEMNotifyThreadExit(DWORD dwThrdId, DWORD dwExitCode);
void OEMNotifyReschedule(DWORD dwThrdId, DWORD dwPrio, DWORD dwQuantum, DWORD dwFlags);
DWORD OEMNotifyIntrOccurs(DWORD dwSysIntr);
VOID OEMUpdateReschedTime(DWORD dwTick);
DWORD OEMEnumExtensionDRAM(PMEMORY_SECTION pMemSections, DWORD dwMemSections);
DWORD OEMCalcFSPages(DWORD dwMemPages, DWORD dwDefaultFSPages);
void OEMInitCoProcRegs(LPBYTE pArea);
void OEMSaveCoProcRegs(LPBYTE pArea);
void OEMRestoreCoProcRegs(LPBYTE pArea);
DWORD OEMReadRegistry(DWORD dwFlags, LPBYTE pBuf, DWORD len);
BOOL OEMWriteRegistry (DWORD dwFlags, LPBYTE pBuf, DWORD len);
void OEMProfilerTimerEnable(DWORD dwUSec);
void OEMProfilerTimerDisable(void);
BOOL OEMIsRom(DWORD dwShiftedPhysAddr);
void OEMMapW32Priority(int nPrios, LPBYTE pPrioMap);
#if defined (ARM)
void OEMSaveVFPCtrlRegs(LPDWORD lpExtra, int nMaxRegs);
void OEMRestoreVFPCtrlRegs(LPDWORD lpExtra, int nMaxRegs);
BOOL OEMHandleVFPException(ULONG fpexc, EXCEPTION_RECORD* pExr, CONTEXT* pContext, DWORD* pdwExcpId, BOOL fInKMode);
#endif

// Declaration of KITL entry point
extern BOOL WINAPI KitlDllMain (HINSTANCE DllInstance, DWORD dwReason, LPVOID Reserved);

// Declaration of kernel security cookie for linking purposes
extern DWORD_PTR __security_cookie;
extern DWORD_PTR __security_cookie_complement;

// ---------------------------------------------------------------------------
// OEMInitDebugSerial: REQUIRED
//
// This function initializes the debug serial port on the target device,
// useful for debugging OAL bringup.
//
// This is the first OAL function that the kernel calls, before the OEMInit
// function and before the kernel data section is fully initialized.
//
// OEMInitDebugSerial can use global variables; however, these variables might
// not be initialized and might subsequently be cleared when the kernel data
// section is initialized.
//
void OEMInitDebugSerial(void)
{

  // Fill in debug serial initialization code here.

  return;
}

// ---------------------------------------------------------------------------
// OEMInit: REQUIRED
//
// This function intializes device hardware as well as initiates the KITL
// debug transport.
//
// This is the second OAL function that the kernel calls.
//
// When the kernel calls OEMInit, interrupts are disabled and the kernel is
// unable to handle exceptions. The only kernel service available to this
// function is HookInterrupt.
//
void OEMInit(void)
{
  // Optionally customize function names for kernel entry points.
  RemapOALGlobalFunctions();

  // Optionally initialize OAL variables
  SetOALGlobalVariables();

  // Fill in hardware initialization code here.

  // Fill in KITL initiation here.

  return;
}

// ---------------------------------------------------------------------------
// CustomWriteDebugByte: CUSTOM
//
// This is an example function that kernel calls instead of OEMWriteDebugByte.
// We point the call to OEMWriteDebugByte here in the RemapOALFunctions
// function.
//
// This example function capitalizes any letters sent before passing it on
// to OEMWriteDebugByte to actually do the hardware write.  Provided you
// remapped the function pointer in OEMGlobal, you could do the hardware
// write here and simply not implement OEMWriteDebugByte.
//
void CustomWriteDebugByte(BYTE ch)
{
  if(ch >= 0x61 && ch <= 0x7A)
  {
    ch -= 32;
  }
  OEMWriteDebugByte(ch);

  return;
}

// ---------------------------------------------------------------------------
// RemapOALGlobalFunctions: CUSTOM
//
// The kernel calls OAL functions through a table of function pointers called
// OEMGlobal (see oemglobal.h for the full listing).  If you want to use a
// different function name for a required function, or use an optional
// function, simply change the pointer here.
//
void RemapOALGlobalFunctions(void)
{
  // Example remapping of a required function from default to a custom name:
  g_pOemGlobal->pfnWriteDebugByte = CustomWriteDebugByte;

  // Example mappings of optional functions.  Uncomment any line to map
  // (use) the optional function.
  //g_pOemGlobal->pfnWriteDebugByte = OEMWriteDebugByte;
  //g_pOemGlobal->pfnWriteDebugString = OEMWriteDebugString;
  //g_pOemGlobal->pfnReadDebugByte = OEMReadDebugByte;
  //g_pOemGlobal->pfnWriteDebugLED = OEMWriteDebugLED;
  //g_pOemGlobal->pfnInitClock = OEMInitClock;
  //g_pOemGlobal->pfnQueryPerfCounter = OEMQueryPerformanceCounter;
  //g_pOemGlobal->pfnQueryPerfFreq = OEMQueryPerformanceFrequency;
  //g_pOemGlobal->pfnNotifyThreadExit = OEMNotifyThreadExit;
  //g_pOemGlobal->pfnNotifyReschedule = OEMNotifyReschedule;
  //g_pOemGlobal->pfnNotifyIntrOccurs = OEMNotifyIntrOccurs;
  //g_pOemGlobal->pfnUpdateReschedTime = OEMUpdateReschedTime;
  //g_pOemGlobal->pfnEnumExtensionDRAM = OEMEnumExtensionDRAM;
  //g_pOemGlobal->pfnCalcFSPages = OEMCalcFSPages;
  //g_pOemGlobal->pfnInitCoProcRegs = OEMInitCoProcRegs;
  //g_pOemGlobal->pfnSaveCoProcRegs = OEMSaveCoProcRegs;
  //g_pOemGlobal->pfnRestoreCoProcRegs = OEMRestoreCoProcRegs;
  //g_pOemGlobal->pfnReadRegistry = OEMReadRegistry;
  //g_pOemGlobal->pfnWriteRegistry = OEMWriteRegistry;
  //g_pOemGlobal->pfnProfileTimerEnable= OEMProfilerTimerEnable;
  //g_pOemGlobal->pfnProfileTimerDisable = OEMProfilerTimerDisable;
  //g_pOemGlobal->pfnIsRom = OEMIsRom;
  //g_pOemGlobal->pfnMapW32Priority = OEMMapW32Priority;

  // Set the KITL entry point.  This is already set by default to
  // KitlDllMain, but if we want to change it we can do so here.
  //g_pOemGlobal->pfnKITLGlobalInit = KitlDllMain;

  // The following optional functions are processor-specific, so they will
  // only exist when compiling for a certain cpu type
#if defined (ARM)
  //g_pOemGlobal->pfnSaveVFPCtrlRegs = OEMSaveVFPCtrlRegs;
  //g_pOemGlobal->pfnRestoreVFPCtrlRegs = OEMRestoreVFPCtrlRegs;
  //g_pOemGlobal->pfnHandleVFPExcp = OEMHandleVFPException;
#endif

  return;
}

// ---------------------------------------------------------------------------
// SetOALGlobalVariables: CUSTOM
//
// The kernel uses several OAL global variables for configuration purposes.
// Any changes to these variables should generally be separated into more
// logical groups during OEMInit.
//
// Changing the variables is optional since they will all have benign
// default values (listed below).  This function is designed only to
// illustrate how you would override the defaults.
//
 void SetOALGlobalVariables(void)
{
  // Specifies the thread quantum for OS (scheduler period).
  // The default value (100) is specified by DEFAULT_THREAD_QUANTUM in
  // private\winceos\coreos\nk\oemmain\oemglobal.c.
  g_pOemGlobal->dwDefaultThreadQuantum = 100;

  // Specifies the next available address following the first available
  // contiguous block of memory.
  g_pOemGlobal->dwMainMemoryEndAddress = 0;

  // Specifies the size of the memory allocation, in bytes, needed for the
  // OEM to save or restore coprocessor registers. This variable is only
  // used if the particular platform or CPU has coprocessor registers that
  // must be saved or restored during context switches.
  g_pOemGlobal->cbCoProcRegSize = 0;

  // Controls whether the save/restore of coprocessor registers is
  // performed.
  g_pOemGlobal->fSaveCoProcReg = FALSE;

  // Specifies the watchdog period, in milliseconds, where the hardware
  // watchdog must be refreshed before system reset. The default value,
  // 0, indicates that the watchdog timer does not exist.
  g_pOemGlobal->dwWatchDogPeriod = 0;

  // Specifies the kernel watchdog thread priority.
  // The default value (100) is specified by DEFAULT_WATCHDOG_PRIORITY in
  // private\winceos\coreos\nk\oemmain\oemglobal.c.
  g_pOemGlobal->dwWatchDogThreadPriority = 100;

  // Specifies the amount of memory for the error reporting dump area
  g_pOemGlobal->cbErrReportSize = 0;

  // Specifies XIP region(s)
  g_pOemGlobal->pROMChain = NULL;

  // Platform-specific information passed from the OAL to KITL
  g_pOemGlobal->pKitlInfo = NULL;

  // Specifies compiler /GS flag security cookies
  g_pOemGlobal->p__security_cookie = &__security_cookie;
  g_pOemGlobal->p__security_cookie_complement = &__security_cookie_complement;

  // Specifies the alarm resolution in ms
  g_pOemGlobal->dwAlarmResolution = DEFAULT_ALARMRESOLUTION_MSEC;

  // Specifies number of years for RTC rollover
  g_pOemGlobal->dwYearsRTCRollover  = 0;

#ifdef DEBUG
  // A reference to the OAL's debug zone settings DBGPARAM structure
  // This only exists in debug builds, thus the #ifdef.
  g_pOemGlobal->pdpCurSettings = &dpCurSettings;
#else
  g_pOemGlobal->pdpCurSettings = NULL;
#endif

  // The following variables are processor-specific, so they will
  // only exist when compiling for a certain cpu type
#if defined (ARM)
  // Specifies extra 1st level page table bits
  g_pOemGlobal->dwARM1stLvlBits = 0;

  // Specifies C and B bits (used to build the ARM CPU page tables).
  g_pOemGlobal->dwARMCacheMode = 0;

  // Indicates Instruction-Cache is Virtually Indexed Virtually
  // Tagged ASID-tagged - for ARMv6 only.
  g_pOemGlobal->f_V6_VIVT_ICache = 0;

#elif defined (MIPS)
  // Specifies the bits to enable the platform-specific coprocessor
  // The kernel uses the default value 0x20000000 to indicate there
  // are no special coprocessors.
  g_pOemGlobal->dwCoProcBits = 0x20000000;

  // Specifies the last index for the TLB which corresponds to the size
  // of the TLB minus 1.
  g_pOemGlobal->dwOEMTLBLastIdx = 0;

  // Specifies the architecture flag override value.  If the default
  // value is used, the kernel attempts to auto-detect all architecture
  // flags.
  g_pOemGlobal->dwArchFlagOverride = MIPS_FLAG_NO_OVERRIDE;

  // Pointers to arrays that provides the kernel with
  // information about which nested interrupts are masked while the
  // current interrupt is being handled.  This must be initialized;
  // while NULL is a compilable default, the tables must be
  // populated for the kernel to function on MIPS CPUs.
  // Pointer to 64 bytes
  g_pOemGlobal->pIntrPrio = NULL;
  // Pointer to 8 bytes
  g_pOemGlobal->pIntrMask = NULL;
#elif defined (SHx)
  // Specifies the interrupt event code length for SHx processors
  g_pOemGlobal->dwSHxIntEventCodeLength = SH4_INTEVT_LENGTH;
#endif

  return;
}


?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产人成综合网站| 国产欧美日本一区二区三区| 国产亚洲精久久久久久| 亚洲精品成人天堂一二三| 精品一区免费av| 欧美在线一区二区| 国产欧美一区二区精品久导航 | 精品久久久久av影院| 亚洲综合另类小说| 成人三级伦理片| 欧美不卡一区二区三区| 舔着乳尖日韩一区| 色成人在线视频| 国产精品久久久久久久久图文区 | 激情综合网天天干| 91精品国产综合久久久久久| 亚洲欧美一区二区三区久本道91| 国产一区二区91| 欧美不卡在线视频| 天天色天天操综合| 欧美性淫爽ww久久久久无| 中文字幕日本乱码精品影院| 欧美成人一区二区三区在线观看| 亚洲色图都市小说| av电影天堂一区二区在线观看| 久久午夜色播影院免费高清| 美女免费视频一区二区| 3d动漫精品啪啪一区二区竹菊| 一区二区三区日韩精品视频| 99国产精品久| 国产精品久久久久国产精品日日| 国产精品一级在线| 2020日本不卡一区二区视频| 5566中文字幕一区二区电影| 日韩精品电影在线观看| 日韩欧美电影一二三| 亚洲午夜久久久久久久久久久 | 一个色在线综合| 92国产精品观看| 亚洲人成网站色在线观看| 99国产精品久久久久久久久久久 | 久久综合一区二区| 麻豆91在线播放| 精品国产一区二区三区久久影院| 免费观看在线色综合| 欧美va亚洲va在线观看蝴蝶网| 日本视频中文字幕一区二区三区| 亚洲不卡一区二区三区| 91精品办公室少妇高潮对白| 亚洲精品中文字幕在线观看| 91免费视频网址| 亚洲狠狠爱一区二区三区| 欧美天天综合网| 视频一区免费在线观看| 日韩欧美另类在线| 国产精品123| 国产精品的网站| 色成人在线视频| 日韩精品一二三区| 精品日产卡一卡二卡麻豆| 色乱码一区二区三区88| 国产精品久久久一本精品| 午夜精品久久久久久不卡8050 | 日本免费新一区视频| 欧美一区二区三区婷婷月色| 奇米影视在线99精品| 26uuu精品一区二区在线观看| 国产精品2024| 综合久久给合久久狠狠狠97色| 欧美亚洲动漫精品| 久久国产精品色婷婷| 国产女同性恋一区二区| 色老汉一区二区三区| 视频一区二区中文字幕| 国产亚洲视频系列| 色94色欧美sute亚洲线路一ni | 成人白浆超碰人人人人| 夜色激情一区二区| 日韩一区二区影院| 懂色av一区二区三区蜜臀| 亚洲精品高清在线观看| 日韩欧美视频一区| 99国产精品久久久久| 水野朝阳av一区二区三区| 国产亚洲精品7777| 欧美自拍丝袜亚洲| 极品尤物av久久免费看| 日韩理论片一区二区| 欧美一区二视频| 免费成人av资源网| 久久99精品久久久久久动态图| 久久久精品欧美丰满| 欧美又粗又大又爽| 国产自产高清不卡| 亚洲精品伦理在线| 日韩三级电影网址| 色香蕉成人二区免费| 美女视频网站久久| 亚洲欧美国产77777| 日韩欧美成人一区| 91捆绑美女网站| 麻豆91精品91久久久的内涵| 亚洲欧洲日韩一区二区三区| 4438亚洲最大| 一本色道**综合亚洲精品蜜桃冫 | 国产精品久久久久久久久快鸭 | proumb性欧美在线观看| 免费人成在线不卡| 亚洲欧美欧美一区二区三区| 蜜桃视频第一区免费观看| 国产精品成人一区二区三区夜夜夜| 91精品久久久久久蜜臀| 成人av综合在线| 精品一区二区在线播放| 亚洲一本大道在线| 中文乱码免费一区二区| 日韩丝袜情趣美女图片| 欧美亚洲综合久久| 成人动漫视频在线| 国产剧情av麻豆香蕉精品| 午夜私人影院久久久久| 日韩理论片网站| 国产欧美日韩三区| 精品国产电影一区二区| 欧美日韩国产首页| 色婷婷激情综合| 丁香五精品蜜臀久久久久99网站 | 亚洲123区在线观看| 国产精品国产三级国产专播品爱网| 日韩三级在线观看| 欧美狂野另类xxxxoooo| 日本韩国一区二区三区| 不卡高清视频专区| 国产高清无密码一区二区三区| 日本欧美大码aⅴ在线播放| 亚洲小说欧美激情另类| 亚洲精品成人天堂一二三| 国产精品国产三级国产普通话99 | 欧美mv日韩mv| 欧美一区永久视频免费观看| 欧美视频一区二区三区| 国产精品久99| 中文在线免费一区三区高中清不卡| 欧美videossexotv100| 日韩午夜在线影院| 欧美一级欧美三级| 欧美一区二区在线免费播放| 88在线观看91蜜桃国自产| 欧美日韩视频一区二区| 欧美性大战久久久久久久| 91麻豆国产香蕉久久精品| 色综合天天综合狠狠| 91在线视频播放| 91网站最新地址| 色综合久久天天综合网| 色综合久久久网| 色国产综合视频| 在线观看亚洲成人| 欧美视频在线一区| 欧美高清精品3d| 日韩欧美国产精品| 精品久久久久久久久久久久包黑料| 精品免费日韩av| 精品国产免费人成电影在线观看四季 | 97精品国产露脸对白| 成+人+亚洲+综合天堂| 97超碰欧美中文字幕| 色哟哟国产精品免费观看| 色婷婷国产精品久久包臀| 91久久精品一区二区二区| 精品污污网站免费看| 8x8x8国产精品| 日韩精品专区在线| 久久久久国产精品人| 中文一区二区在线观看| 亚洲欧洲日韩一区二区三区| 99精品视频中文字幕| 色哟哟精品一区| 欧美久久一二区| 欧美电影精品一区二区| 欧美极品aⅴ影院| 亚洲精选在线视频| 日韩国产在线观看| 韩国午夜理伦三级不卡影院| 国产aⅴ精品一区二区三区色成熟| 成人国产精品免费观看动漫| 91蝌蚪国产九色| 91精品国模一区二区三区| 久久美女高清视频| 日韩一区欧美小说| 日韩在线观看一区二区| 韩国一区二区三区| 高清久久久久久| 国产麻豆精品久久一二三| 午夜精品久久久久久久| 亚洲美女区一区| 日本午夜精品一区二区三区电影| 国产一区视频网站| 色欧美乱欧美15图片| 日韩视频一区在线观看|