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

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

?? proc-arm2,3.s

?? 這個linux源代碼是很全面的~基本完整了~使用c編譯的~由于時間問題我沒有親自測試~但就算用來做參考資料也是非常好的
?? S
字號:
/* *  linux/arch/arm/mm/proc-arm2,3.S * *  Copyright (C) 1997-1999 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * *  MMU functions for ARM2,3 * *  These are the low level assembler for performing cache *  and memory functions on ARM2, ARM250 and ARM3 processors. */#include <linux/linkage.h>#include <asm/assembler.h>#include <asm/constants.h>#include <asm/procinfo.h>/* * MEMC workhorse code.  It's both a horse which things it's a pig. *//* * Function: cpu_memc_update_entry(pgd_t *pgd, unsigned long phys_pte, unsigned long addr) * Params  : pgd	Page tables/MEMC mapping *         : phys_pte	physical address, or PTE *         : addr	virtual address */ENTRY(cpu_memc_update_entry)		tst	r1, #PAGE_PRESENT		@ is the page present		orreq	r1, r1, #PAGE_OLD | PAGE_CLEAN		moveq	r2, #0x01f00000		mov	r3, r1, lsr #13			@ convert to physical page nr		and	r3, r3, #0x3fc		adr	ip, memc_phys_table_32		ldr	r3, [ip, r3]		tst	r1, #PAGE_OLD | PAGE_NOT_USER		biceq	r3, r3, #0x200		tsteq	r1, #PAGE_READONLY | PAGE_CLEAN		biceq	r3, r3, #0x300		mov	r2, r2, lsr #15			@ virtual -> nr		orr	r3, r3, r2, lsl #15		and	r2, r2, #0x300		orr	r3, r3, r2, lsl #2		and	r2, r3, #255		sub	r0, r0, #256 * 4		str	r3, [r0, r2, lsl #2]		strb	r3, [r3]		movs	pc, lr/* * Params  : r0 = preserved *         : r1 = memc table base (preserved) *         : r2 = page table entry *         : r3 = preserved *         : r4 = unused *         : r5 = memc physical address translation table *         : ip = virtual address (preserved) */update_pte:		mov	r4, r2, lsr #13		and	r4, r4, #0x3fc		ldr	r4, [r5, r4]			@ covert to MEMC page		tst	r2, #PAGE_OLD | PAGE_NOT_USER	@ check for MEMC read		biceq	r4, r4, #0x200		tsteq	r2, #PAGE_READONLY | PAGE_CLEAN	@ check for MEMC write		biceq	r4, r4, #0x300		orr	r4, r4, ip		and	r2, ip, #0x01800000		orr	r4, r4, r2, lsr #13		and	r2, r4, #255		str	r4, [r1, r2, lsl #2]		movs	pc, lr/* * Params  : r0 = preserved *         : r1 = memc table base (preserved) *         : r2 = page table base *         : r3 = preserved *         : r4 = unused *         : r5 = memc physical address translation table *         : ip = virtual address (updated) */update_pte_table:		stmfd	sp!, {r0, lr}		bic	r0, r2, #31:		ldr	r2, [r0], #4			@ get entry		tst	r2, #PAGE_PRESENT		@ page present		blne	update_pte			@ process pte		add	ip, ip, #32768			@ increment virt addr		ldr	r2, [r0], #4			@ get entry		tst	r2, #PAGE_PRESENT		@ page present		blne	update_pte			@ process pte		add	ip, ip, #32768			@ increment virt addr		ldr	r2, [r0], #4			@ get entry		tst	r2, #PAGE_PRESENT		@ page present		blne	update_pte			@ process pte		add	ip, ip, #32768			@ increment virt addr		ldr	r2, [r0], #4			@ get entry		tst	r2, #PAGE_PRESENT		@ page present		blne	update_pte			@ process pte		add	ip, ip, #32768			@ increment virt addr		tst	ip, #32768 * 31			@ finished?		bne	1b		ldmfd	sp!, {r0, pc}^/* * Function: cpu_memc_update_all(pgd_t *pgd) * Params  : pgd	Page tables/MEMC mapping * Notes   : this is optimised for 32k pages */ENTRY(cpu_memc_update_all)		stmfd	sp!, {r4, r5, lr}		bl	clear_tables		sub	r1, r0, #256 * 4		@ start of MEMC tables		adr	r5, memc_phys_table_32		@ Convert to logical page number		mov	ip, #0				@ virtual address1:		ldmia	r0!, {r2, r3}		tst	r2, #PAGE_PRESENT		addeq	ip, ip, #1048576		blne	update_pte_table		mov	r2, r3		tst	r2, #PAGE_PRESENT		addeq	ip, ip, #1048576		blne	update_pte_table		teq	ip, #32 * 1048576		bne	1b		ldmfd	sp!, {r4, r5, pc}^/* * Build the table to map from physical page number to memc page number */		.type	memc_phys_table_32, #objectmemc_phys_table_32:		.irp	b7, 0x00, 0x80		.irp	b6, 0x00, 0x02		.irp	b5, 0x00, 0x04		.irp	b4, 0x00, 0x01		.irp	b3, 0x00, 0x40		.irp	b2, 0x00, 0x20		.irp	b1, 0x00, 0x10		.irp	b0, 0x00, 0x08		.long	0x03800300 + \b7 + \b6 + \b5 + \b4 + \b3 + \b2 + \b1 + \b0		.endr		.endr		.endr		.endr		.endr		.endr		.endr		.endr		.size	memc_phys_table_32, . - memc_phys_table_32/* * helper for cpu_memc_update_all, this clears out all * mappings, setting them close to the top of memory, * and inaccessible (0x01f00000). * Params  : r0 = page table pointer */clear_tables:	ldr	r1, _arm3_set_pgd - 4		ldr	r2, [r1]		sub	r1, r0, #256 * 4		@ start of MEMC tables		add	r2, r1, r2, lsl #2		@ end of tables		mov	r3, #0x03f00000			@ Default mapping (null mapping)		orr	r3, r3, #0x00000f00		orr	r4, r3, #1		orr	r5, r3, #2		orr	ip, r3, #31:		stmia	r1!, {r3, r4, r5, ip}		add	r3, r3, #4		add	r4, r4, #4		add	r5, r5, #4		add	ip, ip, #4		stmia	r1!, {r3, r4, r5, ip}		add	r3, r3, #4		add	r4, r4, #4		add	r5, r5, #4		add	ip, ip, #4		teq	r1, r2		bne	1b		mov	pc, lr/* * Function: *_set_pgd(pgd_t *pgd) * Params  : pgd	New page tables/MEMC mapping * Purpose : update MEMC hardware with new mapping */		.word	SYMBOL_NAME(page_nr)_arm3_set_pgd:	mcr	p15, 0, r1, c1, c0, 0		@ flush cache_arm2_set_pgd:	stmfd	sp!, {lr}		ldr	r1, _arm3_set_pgd - 4		ldr	r2, [r1]		sub	r0, r0, #256 * 4		@ start of MEMC tables		add	r1, r0, r2, lsl #2		@ end of tables1:		ldmia	r0!, {r2, r3, ip, lr}		strb	r2, [r2]		strb	r3, [r3]		strb	ip, [ip]		strb	lr, [lr]		ldmia	r0!, {r2, r3, ip, lr}		strb	r2, [r2]		strb	r3, [r3]		strb	ip, [ip]		strb	lr, [lr]		teq	r0, r1		bne	1b		ldmfd	sp!, {pc}^/* * Function: *_proc_init (void) * Purpose : Initialise the cache control registers */_arm3_proc_init:		mov	r0, #0x001f0000		orr	r0, r0, #0x0000ff00		orr	r0, r0, #0x000000ff		mcr	p15, 0, r0, c3, c0		@ ARM3 Cacheable		mcr     p15, 0, r0, c4, c0		@ ARM3 Updateable		mov	r0, #0		mcr     p15, 0, r0, c5, c0		@ ARM3 Disruptive		mcr     p15, 0, r0, c1, c0		@ ARM3 Flush		mov	r0, #3		mcr     p15, 0, r0, c2, c0		@ ARM3 Control_arm2_proc_init:		movs	pc, lr/* * Function: *_proc_fin (void) * Purpose : Finalise processor (disable caches) */_arm3_proc_fin:	mov	r0, #2		mcr	p15, 0, r0, c2, c0_arm2_proc_fin:	orrs	pc, lr, #I_BIT|F_BIT/* * Function: *_xchg_1 (int new, volatile void *ptr) * Params  : new	New value to store at... *	   : ptr	pointer to byte-wide location * Purpose : Performs an exchange operation * Returns : Original byte data at 'ptr' */_arm2_xchg_1:	mov	r2, pc		orr	r2, r2, #I_BIT		teqp	r2, #0		ldrb	r2, [r1]		strb	r0, [r1]		mov	r0, r2		movs	pc, lr_arm3_xchg_1:	swpb	r0, r0, [r1]		movs	pc, lr/* * Function: *_xchg_4 (int new, volatile void *ptr) * Params  : new	New value to store at... *	   : ptr	pointer to word-wide location * Purpose : Performs an exchange operation * Returns : Original word data at 'ptr' */_arm2_xchg_4:	mov	r2, pc		orr	r2, r2, #I_BIT		teqp	r2, #0		ldr	r2, [r1]		str	r0, [r1]		mov	r0, r2		movs	pc, lr_arm3_xchg_4:	swp	r0, r0, [r1]		movs	pc, lr_arm2_3_check_bugs:		bics	pc, lr, #0x04000000		@ Clear FIQ disable bitarmvlsi_name:	.asciz	"ARM/VLSI"_arm2_name:	.asciz	"ARM 2"_arm250_name:	.asciz	"ARM 250"_arm3_name:	.asciz	"ARM 3"		.section ".text.init", #alloc, #execinstr/* * Purpose : Function pointers used to access above functions - all calls *	     come through these */		.globl	SYMBOL_NAME(arm2_processor_functions)SYMBOL_NAME(arm2_processor_functions):		.word	_arm2_3_check_bugs		.word	_arm2_proc_init		.word	_arm2_proc_fin		.word	_arm2_set_pgd		.word	_arm2_xchg_1		.word	_arm2_xchg_4cpu_arm2_info:		.long	armvlsi_name		.long	_arm2_name		.globl	SYMBOL_NAME(arm250_processor_functions)SYMBOL_NAME(arm250_processor_functions):		.word	_arm2_3_check_bugs		.word	_arm2_proc_init		.word	_arm2_proc_fin		.word	_arm2_set_pgd		.word	_arm3_xchg_1		.word	_arm3_xchg_4cpu_arm250_info:		.long	armvlsi_name		.long	_arm250_name		.globl	SYMBOL_NAME(arm3_processor_functions)SYMBOL_NAME(arm3_processor_functions):		.word	_arm2_3_check_bugs		.word	_arm3_proc_init		.word	_arm3_proc_fin		.word	_arm3_set_pgd		.word	_arm3_xchg_1		.word	_arm3_xchg_4cpu_arm3_info:		.long	armvlsi_name		.long	_arm3_namearm2_arch_name:	.asciz	"armv1"arm3_arch_name:	.asciz	"armv2"arm2_elf_name:	.asciz	"v1"arm3_elf_name:	.asciz	"v2"		.align		.section ".proc.info", #alloc, #execinstr		.long	0x41560200		.long	0xfffffff0		.long	0		mov	pc, lr		.long	arm2_arch_name		.long	arm2_elf_name		.long	0		.long	cpu_arm2_info		.long	SYMBOL_NAME(arm2_processor_functions)		.long	0x41560250		.long	0xfffffff0		.long	0		mov	pc, lr		.long	arm3_arch_name		.long	arm3_elf_name		.long	0		.long	cpu_arm250_info		.long	SYMBOL_NAME(arm250_processor_functions)		.long	0x41560300		.long	0xfffffff0		.long	0		mov	pc, lr		.long	arm3_arch_name		.long	arm3_elf_name		.long	0		.long	cpu_arm3_info		.long	SYMBOL_NAME(arm3_processor_functions)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本精品一区二区三区| 欧美激情一区二区在线| 精品国免费一区二区三区| 欧美极品美女视频| 婷婷丁香久久五月婷婷| 国产999精品久久久久久| 欧美理论片在线| 国产精品国产三级国产普通话蜜臀 | 欧美一区二区三区在线观看视频| 久久久精品综合| 午夜精品一区二区三区电影天堂| 国产精品99久久久久久似苏梦涵| 欧美另类一区二区三区| 亚洲欧洲日韩女同| 国产精品中文欧美| 91精品国产综合久久久蜜臀图片 | 欧美丝袜丝nylons| 国产精品嫩草影院com| 极品销魂美女一区二区三区| 欧美午夜视频网站| 亚洲三级视频在线观看| 亚洲日本护士毛茸茸| 国产激情精品久久久第一区二区| 91麻豆精品国产91久久久| 亚洲乱码国产乱码精品精的特点| 成人丝袜18视频在线观看| 精品少妇一区二区三区免费观看| 肉肉av福利一精品导航| 欧美日韩在线不卡| 午夜久久久久久久久| 色av成人天堂桃色av| 亚洲视频免费在线观看| 91亚洲精华国产精华精华液| 欧美国产欧美综合| 成人av免费在线播放| 国产日韩综合av| 国产精品88888| 国产午夜亚洲精品理论片色戒 | 精一区二区三区| 日韩免费性生活视频播放| 奇米一区二区三区av| 日韩欧美一区二区在线视频| 久久国产人妖系列| 久久综合色一综合色88| 国产高清精品在线| 国产精品久久久久久久久果冻传媒 | 久久久精品tv| 综合激情成人伊人| 国产精品自拍三区| 久久综合久久99| 国产一区在线观看麻豆| 久久久久亚洲综合| 福利一区在线观看| 亚洲三级电影网站| 欧美性猛交一区二区三区精品| 亚洲国产精品久久不卡毛片| 欧美一区二区三区影视| 国产精品一区2区| 国产精品福利在线播放| 成人av影视在线观看| 国产精品免费丝袜| 色婷婷av一区二区三区大白胸| 亚洲一卡二卡三卡四卡五卡| 91精品国产入口在线| 国产一区二区三区精品欧美日韩一区二区三区 | 国产综合久久久久久久久久久久 | 风间由美一区二区三区在线观看| 欧美xxxxx裸体时装秀| 欧美a级一区二区| 欧美电影精品一区二区| 国产高清无密码一区二区三区| 中文字幕一区二区三区在线播放| 欧美视频在线播放| 国产毛片精品视频| 亚洲一二三区在线观看| 精品国精品国产| 91麻豆国产精品久久| 免费成人在线影院| 国产精品理伦片| 91精品啪在线观看国产60岁| 国产白丝网站精品污在线入口| 亚洲午夜久久久久中文字幕久| 日韩精品一区二区三区在线| 99久久精品国产一区| 日本不卡123| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 久久精品国产成人一区二区三区 | 国产激情偷乱视频一区二区三区| 国产精品美女久久久久久| 欧美日韩免费观看一区二区三区| 国产高清在线观看免费不卡| 亚洲成av人**亚洲成av**| 国产农村妇女精品| 日韩欧美亚洲国产另类| 91九色最新地址| 国产福利一区在线| 三级影片在线观看欧美日韩一区二区 | 看国产成人h片视频| 亚洲视频一区在线| 中文字幕欧美日韩一区| 欧美电影免费观看高清完整版在线观看| 亚洲精品精品亚洲| 亚洲精选免费视频| 久久九九久精品国产免费直播| 欧美无砖专区一中文字| 99精品桃花视频在线观看| 久久99国产精品成人| 午夜精品久久久久久不卡8050| 国产精品视频线看| 国产日韩欧美一区二区三区乱码 | 九九国产精品视频| 舔着乳尖日韩一区| 亚洲精品少妇30p| 国产精品天美传媒| 国产喂奶挤奶一区二区三区| 久久午夜免费电影| 2欧美一区二区三区在线观看视频| 日韩一区二区精品葵司在线 | 欧美国产精品v| 欧美男女性生活在线直播观看| 91丨porny丨国产| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产专区综合网| 美国三级日本三级久久99| 日韩在线卡一卡二| 日韩电影网1区2区| 日韩成人精品视频| 日韩经典一区二区| 麻豆精品新av中文字幕| 精品在线免费视频| 国产精品1区2区3区在线观看| 国产成人综合自拍| 99久久精品免费看| 在线影视一区二区三区| 337p亚洲精品色噜噜| 91精品视频网| 在线观看一区二区视频| 色综合中文综合网| 亚洲大型综合色站| 免费欧美日韩国产三级电影| 久久精品国产秦先生| 国产精品一区在线观看你懂的| 国产高清在线精品| 91同城在线观看| 欧美日韩国产美| 精品盗摄一区二区三区| 国产精品国产三级国产专播品爱网 | 日韩高清在线观看| 国产成人亚洲精品青草天美| 91女人视频在线观看| 在线成人免费视频| 国产亚洲va综合人人澡精品| 尤物在线观看一区| 精品制服美女久久| 色素色在线综合| 日韩精品专区在线影院重磅| 亚洲欧美综合色| 久久福利视频一区二区| 99热这里都是精品| 日韩欧美中文字幕一区| 国产精品国产三级国产专播品爱网 | 午夜久久久影院| 大胆欧美人体老妇| 777xxx欧美| 亚洲女人****多毛耸耸8| 久久精品一区八戒影视| 亚洲乱码中文字幕综合| 亚洲黄色小视频| 国产精品综合在线视频| 国产精品女主播av| 日本精品裸体写真集在线观看| 日韩视频在线你懂得| 国产精品国产三级国产普通话99| 成人性视频免费网站| 国产精品国产三级国产有无不卡 | 亚洲aaa精品| 亚洲电影欧美电影有声小说| 精品一区二区综合| 欧美三级电影在线观看| 国产精品久久看| 韩国精品在线观看| 欧美久久免费观看| 亚洲日本一区二区三区| 国产精品自拍在线| 欧美电视剧免费全集观看| 一区二区激情视频| 99久久免费国产| 国产亚洲一区二区三区四区| 日本欧美一区二区三区| 在线影视一区二区三区| 国产精品国产三级国产aⅴ原创 | 美女视频黄 久久| 国产精品69毛片高清亚洲| 欧美一级视频精品观看| 亚洲国产精品影院| 色噜噜狠狠成人中文综合| 国产精品免费网站在线观看| 成人黄色片在线观看| 欧美激情综合在线| 成人短视频下载|