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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mmu.c

?? RT-Thread是發展中的下一代微內核嵌入式實時操作系統
?? C
字號:
/*
 * File      : mmu.c
 * This file is part of RT-Thread RTOS
 * COPYRIGHT (C) 2006, RT-Thread Development Team
 *
 * The license and distribution terms for this file may be
 * found in the file LICENSE in this distribution or at
 * http://openlab.rt-thread.com/license/LICENSE
 *
 * Change Logs:
 * Date           Author       Notes
 * 2008-04-25     Yi.qiu       first version
 */

#include <rtthread.h>
#include "s3c2410.h"

#define _MMUTT_STARTADDRESS	 0x30080000
#define DESC_SEC	(0x2|(1<<4))
#define CB		(3<<2)  //cache_on, write_back
#define CNB		(2<<2)  //cache_on, write_through
#define NCB             (1<<2)  //cache_off,WR_BUF on
#define NCNB		(0<<2)  //cache_off,WR_BUF off
#define AP_RW		(3<<10) //supervisor=RW, user=RW
#define AP_RO		(2<<10) //supervisor=RW, user=RO

#define DOMAIN_FAULT	(0x0)
#define DOMAIN_CHK	(0x1)
#define DOMAIN_NOTCHK	(0x3)
#define DOMAIN0		(0x0<<5)
#define DOMAIN1		(0x1<<5)

#define DOMAIN0_ATTR	(DOMAIN_CHK<<0)
#define DOMAIN1_ATTR	(DOMAIN_FAULT<<2)

#define RW_CB		(AP_RW|DOMAIN0|CB|DESC_SEC)
#define RW_CNB		(AP_RW|DOMAIN0|CNB|DESC_SEC)
#define RW_NCNB		(AP_RW|DOMAIN0|NCNB|DESC_SEC)
#define RW_FAULT	(AP_RW|DOMAIN1|NCNB|DESC_SEC)

void rt_hw_mmu_init(void);

void MMU_SetTTBase(register rt_uint32_t i)
{
	asm ("mcr p15, 0, %0, c2, c2, 0": :"r" (i));
}

void MMU_SetDomain(register rt_uint32_t i)
{
	asm ("mcr p15,0, %0, c3, c0,  0": :"r" (i));
}

void MMU_EnableMMU()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i |= 0x1;

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_DisableMMU()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i &= ~0x1;

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_EnableICache()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i |= (1 << 12);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_EnableDCache()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i |= (1 << 2);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_DisableICache()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i &= ~(1 << 12);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_DisableDCache()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i &= ~(1 << 2);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_EnableAlignFault()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i |= (1 << 1);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_DisableAlignFault()
{
	register rt_uint32_t i;

	/* read control register */
	asm ("mrc p15, 0, %0, c1, c0, 0":"=r" (i));

	i &= ~(1 << 1);

	/* write back to control register */
	asm ("mcr p15, 0, %0, c1, c0, 0": :"r" (i));
}

void MMU_CleanInvalidateDCacheIndex(int index)
{
	asm ("mcr p15, 0, %0, c7, c14, 2": :"r" (index));
}

void MMU_InvalidateTLB()
{
	asm ("mcr p15, 0, %0, c8, c7, 0": :"r" (0));
}

void MMU_InvalidateICache()
{
	asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (0));
}

void MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr)
{
    volatile rt_uint32_t *pTT;
    volatile int i,nSec;
    pTT=(rt_uint32_t *)_MMUTT_STARTADDRESS+(vaddrStart>>20);
    nSec=(vaddrEnd>>20)-(vaddrStart>>20);
    for(i=0;i<=nSec;i++)
    {
		*pTT = attr |(((paddrStart>>20)+i)<<20);
		pTT++;
    }
}

void rt_hw_mmu_init(void)
{
    int i,j;
    //========================== IMPORTANT NOTE =========================
    //The current stack and code area can't be re-mapped in this routine.
    //If you want memory map mapped freely, your own sophiscated MMU
    //initialization code is needed.
    //===================================================================

    MMU_DisableDCache();
    MMU_DisableICache();

    //If write-back is used,the DCache should be cleared.
    for(i=0;i<64;i++)
    	for(j=0;j<8;j++)
    	    MMU_CleanInvalidateDCacheIndex((i<<26)|(j<<5));
    
    MMU_InvalidateICache();

    //To complete MMU_Init() fast, Icache may be turned on here.
    MMU_EnableICache();

    MMU_DisableMMU();
    MMU_InvalidateTLB();

    //MMU_SetMTT(int vaddrStart,int vaddrEnd,int paddrStart,int attr);
    MMU_SetMTT(0x00000000,0x07f00000,0x00000000,RW_CNB);  //bank0
	MMU_SetMTT(0x00000000,0x03f00000,(int)0x30000000,RW_CB);  //bank0
    MMU_SetMTT(0x04000000,0x07f00000,0,RW_NCNB);  			//bank0
    MMU_SetMTT(0x08000000,0x0ff00000,0x08000000,RW_CNB);  //bank1
    MMU_SetMTT(0x10000000,0x17f00000,0x10000000,RW_NCNB); //bank2
    MMU_SetMTT(0x18000000,0x1ff00000,0x18000000,RW_NCNB); //bank3
    //MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CB); //bank4
    MMU_SetMTT(0x20000000,0x27f00000,0x20000000,RW_CNB); //bank4 for STRATA Flash
    MMU_SetMTT(0x28000000,0x2ff00000,0x28000000,RW_NCNB); //bank5
    //30f00000->30100000, 31000000->30200000
    MMU_SetMTT(0x30000000,0x30100000,0x30000000,RW_CB);	  //bank6-1
    MMU_SetMTT(0x30200000,0x33e00000,0x30200000,RW_NCNB); //bank6-2
 
    MMU_SetMTT(0x33f00000,0x33f00000,0x33f00000,RW_CB);   //bank6-3
    MMU_SetMTT(0x38000000,0x3ff00000,0x38000000,RW_NCNB); //bank7

    MMU_SetMTT(0x40000000,0x47f00000,0x40000000,RW_NCNB); //SFR
    MMU_SetMTT(0x48000000,0x5af00000,0x48000000,RW_NCNB); //SFR
    MMU_SetMTT(0x5b000000,0x5b000000,0x5b000000,RW_NCNB); //SFR
    MMU_SetMTT(0x5b100000,0xfff00000,0x5b100000,RW_FAULT);//not used

    MMU_SetTTBase(_MMUTT_STARTADDRESS);

	/* DOMAIN1: no_access, DOMAIN0,2~15=client(AP is checked) */
    MMU_SetDomain(0x55555550|DOMAIN1_ATTR|DOMAIN0_ATTR);
    	
    //MMU_SetProcessId(0x0);
    MMU_EnableAlignFault();

    MMU_EnableMMU();
    MMU_EnableICache();

	/* DCache should be turned on after MMU is turned on. */
    MMU_EnableDCache(); 	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品色婷婷久久58| 欧美一二三区在线观看| 韩国欧美一区二区| 久久成人18免费观看| 婷婷开心久久网| 午夜精品久久久久久久久久| 一区二区三区在线视频免费| 一区二区三区免费| 亚洲一区自拍偷拍| 日韩高清一区二区| 精品在线你懂的| 国产一二精品视频| 不卡视频在线看| 99re热视频精品| 欧美在线视频全部完| 欧美性色综合网| 欧美一区二区三区免费观看视频| 欧美一级电影网站| 久久嫩草精品久久久精品| 国产视频一区二区在线| 亚洲欧美日韩中文字幕一区二区三区 | 精品一区二区久久久| 经典一区二区三区| www.av亚洲| 欧美日本一区二区三区四区| 制服丝袜av成人在线看| 久久久不卡影院| 一区二区在线免费| 免费成人av在线| 成人aa视频在线观看| 欧美偷拍一区二区| 久久无码av三级| 亚洲精品视频在线观看免费| 日韩精品国产精品| 福利一区二区在线| 欧美视频日韩视频在线观看| 欧美成人video| 自拍偷拍欧美激情| 美女免费视频一区二区| av网站免费线看精品| 91精品国产综合久久香蕉的特点| 国产亚洲综合在线| 亚洲一区二区在线观看视频| 国产资源在线一区| 欧美色综合天天久久综合精品| 日韩精品自拍偷拍| 怡红院av一区二区三区| 韩国女主播成人在线| 欧美亚洲一区三区| 国产精品卡一卡二卡三| 老司机免费视频一区二区| 92国产精品观看| 精品91自产拍在线观看一区| 亚洲成人av中文| av不卡在线播放| 久久午夜羞羞影院免费观看| 视频一区二区国产| 在线观看区一区二| 亚洲欧美自拍偷拍| 成人免费不卡视频| 久久久亚洲精品一区二区三区| 亚洲第一成人在线| 一本久道中文字幕精品亚洲嫩| 欧美精品一区二区三区在线播放| 亚洲chinese男男1069| www.日韩精品| 中文字幕成人在线观看| 国产一区二区三区免费看 | 欧美这里有精品| 亚洲欧洲一区二区在线播放| 韩国三级电影一区二区| 国产精品久久久久久久久果冻传媒 | 久久综合av免费| 另类欧美日韩国产在线| 日韩欧美激情在线| 青青草国产精品97视觉盛宴| 欧美色网一区二区| 亚洲成av人片在线观看无码| 色婷婷国产精品综合在线观看| √…a在线天堂一区| av在线免费不卡| 亚洲欧洲日本在线| 91蝌蚪porny九色| 亚洲精品日日夜夜| 91久久精品国产91性色tv| 一区二区三区精品在线| 在线观看av一区| 日韩精品色哟哟| 日韩精品一区二区三区中文不卡| 激情综合色播激情啊| 久久久久国产一区二区三区四区| 国产一区二区三区黄视频| 中文一区二区完整视频在线观看| 成人精品国产免费网站| 日韩美女视频19| 欧美日韩国产另类一区| 久热成人在线视频| 日本一区二区在线不卡| 99精品久久久久久| 亚洲一二三四区| 欧美mv日韩mv亚洲| 国产99一区视频免费| 亚洲精品成人a在线观看| 精品av综合导航| 成人免费观看av| 亚洲一区在线视频| 精品国产91久久久久久久妲己 | 欧美日韩一区二区三区在线| 日韩av在线发布| 日本一区二区综合亚洲| 欧美亚洲综合久久| 国产一区二区三区精品视频| 亚洲男人的天堂一区二区| 日韩美女在线视频| 成人av免费网站| 美日韩一区二区| 亚洲欧美国产77777| 精品精品国产高清一毛片一天堂| aaa亚洲精品| 国产一区二区三区电影在线观看| 亚洲人成人一区二区在线观看| 欧美一区二区在线看| 91麻豆蜜桃一区二区三区| 青青草国产精品97视觉盛宴| 亚洲天天做日日做天天谢日日欢| 91精品国产日韩91久久久久久| 成人动漫在线一区| 久草中文综合在线| 亚洲成人av在线电影| 成人免费一区二区三区视频 | 蜜桃av一区二区三区| 亚洲人成小说网站色在线| 久久久青草青青国产亚洲免观| 欧美色综合网站| 在线国产亚洲欧美| av成人老司机| 成人av资源站| 国产精品亚洲视频| 黄页视频在线91| 日本成人超碰在线观看| 亚洲午夜激情网站| 亚洲免费电影在线| 国产精品毛片无遮挡高清| 精品久久久久久久人人人人传媒| 在线播放中文一区| 欧美日韩久久久一区| 在线观看亚洲精品视频| 91香蕉视频mp4| 97精品超碰一区二区三区| 成人午夜私人影院| 在线观看www91| 色噜噜久久综合| 欧美性三三影院| 欧美在线观看18| 欧美三区在线视频| 欧美专区在线观看一区| 91国产免费观看| 精品视频123区在线观看| 日本精品一区二区三区高清| 91成人在线免费观看| 91成人在线精品| 4438亚洲最大| 精品国产乱码久久久久久夜甘婷婷 | 99精品在线免费| caoporn国产一区二区| av电影一区二区| 91蝌蚪porny| 欧美撒尿777hd撒尿| 在线播放日韩导航| 欧美大片国产精品| 久久女同性恋中文字幕| 国产精品久久777777| 亚洲精品视频免费观看| 日韩高清不卡在线| 国内外成人在线| 91免费国产在线| 91精品国产综合久久精品图片| 久久综合久久综合亚洲| 国产精品青草综合久久久久99| 一区二区三区加勒比av| 青青草成人在线观看| 国产成人在线视频播放| 在线一区二区三区| 欧美一卡2卡3卡4卡| 国产免费成人在线视频| 一区二区三区精密机械公司| 青草国产精品久久久久久| 成人亚洲精品久久久久软件| 欧美视频一区二区三区四区| 久久免费精品国产久精品久久久久 | 日韩亚洲欧美一区| 国产精品免费aⅴ片在线观看| 一区二区三区久久久| 国产一区二区在线观看免费| 色噜噜夜夜夜综合网| 亚洲精品在线免费观看视频| 亚洲欧美日本韩国| 国产一区二区在线视频| 欧美性生活影院| 国产精品久久久久一区二区三区|