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

📄 init.c

📁 Windows CE 6.0 BSP for the Beagle Board.
💻 C
字号:
//
// Copyright (c) Special Computing.  All rights reserved. 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//
//------------------------------------------------------------------------------
//
//  File:  init.c
//
//  OALCacheGlobalsInit 
//
#include <windows.h>
#include <ceddk.h>
#include <oal.h>

//
//  Globals
//
UINT32 g_dwRangeLimit;     //  Threshold on buffer size between clean/flush line-by-line or whole DCache


extern UINT32 OALGetCacheSizeID(select);

//------------------------------------------------------------------------------
//
//  Function:  OALCacheGlobalsInit
//
//  This function initializes globals variables which holds cache parameters.
//  It must be called before any other cache/TLB function.
//
VOID OALCacheGlobalsInit()
{
	UINT32 select;
	UINT32 IDreg;

	OALMSG(OAL_CACHE&&OAL_VERBOSE, (L"+OALCacheGlobalsInit()\r\n"));

    memset( &g_oalCacheInfo, 0 , sizeof(g_oalCacheInfo) );

	for (select=0;select<4;select++)
	{
		IDreg = OALGetCacheSizeID(select);
		OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"select %d 0x%08x",select,IDreg));
		if (select & 2)
			(select & 1) ? OALMSGS(OAL_CACHE && OAL_VERBOSE, (L" L2 Instruction \r\n")) : OALMSGS(OAL_CACHE && OAL_VERBOSE, (L" L2 Data-Unified \r\n"));
		else
			(select & 1) ? OALMSGS(OAL_CACHE && OAL_VERBOSE, (L" L1 Instruction \r\n")) : OALMSGS(OAL_CACHE && OAL_VERBOSE, (L" L1 Data-Unified \r\n"));
	}
	
	g_oalCacheInfo.L1Flags			=0;
	g_oalCacheInfo.L1ISetsPerWay	= 0x00000040;		// 64
	g_oalCacheInfo.L1INumWays		= 0x00000004;		// 4
	g_oalCacheInfo.L1ILineSize		= 0x00000040;		// 64
	g_oalCacheInfo.L1ISize			= 0x00004000;		// 16k
	g_oalCacheInfo.L1DSetsPerWay	= 0x00000040;		// 64
	g_oalCacheInfo.L1DNumWays		= 0x00000004;		// 4
	g_oalCacheInfo.L1DLineSize		= 0x00000040;		// 64
	g_oalCacheInfo.L1DSize			= 0x00004000;		// 16k

	g_oalCacheInfo.L2Flags			=1;					// Unified
	g_oalCacheInfo.L2ISetsPerWay	= 0x00000200;		// 512
	g_oalCacheInfo.L2INumWays		= 0x00000008;		// 8
	g_oalCacheInfo.L2ILineSize		= 0x00000040;		// 64
	g_oalCacheInfo.L2ISize			= 0x00040000;		// 256k
	g_oalCacheInfo.L2DSetsPerWay	= 0x00000200;		// 512
	g_oalCacheInfo.L2DNumWays		= 0x00000008;		// 8
	g_oalCacheInfo.L2DLineSize		= 0x00000040;		// 64
	g_oalCacheInfo.L2DSize			= 0x00040000;		// 256k

    //  Compute cache range limit
	g_dwRangeLimit = g_oalCacheInfo.L1DLineSize*(
						g_oalCacheInfo.L1DSetsPerWay*g_oalCacheInfo.L1DNumWays +
						g_oalCacheInfo.L2DSetsPerWay*g_oalCacheInfo.L2DNumWays);

	
	OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"   Cache ident:\r\n"));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1Flags:       0x%08x\r\n",g_oalCacheInfo.L1Flags));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1ISetsPerWay: 0x%08x (%d)\r\n", g_oalCacheInfo.L1ISetsPerWay, g_oalCacheInfo.L1ISetsPerWay));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1INumWays:    0x%08x (%d)\r\n", g_oalCacheInfo.L1INumWays, g_oalCacheInfo.L1INumWays));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1ILineSize:   0x%08x (%d)\r\n", g_oalCacheInfo.L1ILineSize, g_oalCacheInfo.L1ILineSize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1ISize:       0x%08x (%d)\r\n", g_oalCacheInfo.L1ISize, g_oalCacheInfo.L1ISize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1DSetsPerWay: 0x%08x (%d)\r\n", g_oalCacheInfo.L1DSetsPerWay, g_oalCacheInfo.L1DSetsPerWay));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1DNumWays:    0x%08x (%d)\r\n", g_oalCacheInfo.L1DNumWays, g_oalCacheInfo.L1DNumWays));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1DLineSize:   0x%08x (%d)\r\n", g_oalCacheInfo.L1DLineSize, g_oalCacheInfo.L1DLineSize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L1DSize:       0x%08x (%d)\r\n", g_oalCacheInfo.L1DSize, g_oalCacheInfo.L1DSize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2Flags:       0x%08x\r\n",g_oalCacheInfo.L2Flags));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2ISetsPerWay: 0x%08x (%d)\r\n", g_oalCacheInfo.L1ISetsPerWay, g_oalCacheInfo.L2ISetsPerWay));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2INumWays:    0x%08x (%d)\r\n", g_oalCacheInfo.L1INumWays, g_oalCacheInfo.L2INumWays));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2ILineSize:   0x%08x (%d)\r\n", g_oalCacheInfo.L1ILineSize, g_oalCacheInfo.L2ILineSize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2ISize:       0x%08x (%d)\r\n", g_oalCacheInfo.L1ISize, g_oalCacheInfo.L2ISize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2DSetsPerWay: 0x%08x (%d)\r\n", g_oalCacheInfo.L1DSetsPerWay, g_oalCacheInfo.L2DSetsPerWay));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2DNumWays:    0x%08x (%d)\r\n", g_oalCacheInfo.L1DNumWays, g_oalCacheInfo.L2DNumWays));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2DLineSize:   0x%08x (%d)\r\n", g_oalCacheInfo.L1DLineSize, g_oalCacheInfo.L2DLineSize));
    OALMSGS(OAL_CACHE && OAL_VERBOSE, (L"       L2DSize:       0x%08x (%d)\r\n", g_oalCacheInfo.L1DSize, g_oalCacheInfo.L2DSize));

	
	OALMSG(OAL_CACHE&&OAL_VERBOSE, (L"-OALCacheGlobalsInit\r\n"));
}

//------------------------------------------------------------------------------

⌨️ 快捷键说明

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