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

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

?? proc-arm2,3.s

?? MIZI Research, Inc.發布的嵌入式Linux內核源碼
?? 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一区二区三区免费野_久草精品视频
亚洲日本青草视频在线怡红院| 一区二区三区免费观看| 中文字幕一区二区三| 日韩黄色片在线观看| 一本到一区二区三区| 久久精品欧美一区二区三区不卡 | 国产农村妇女毛片精品久久麻豆 | 国产一区二区美女| 欧美伊人久久久久久久久影院| 亚洲精品一区二区三区四区高清| 一区二区三区四区五区视频在线观看| 看国产成人h片视频| 在线观看亚洲精品视频| 亚洲国产成人午夜在线一区| 免费成人小视频| 91精品国产综合久久精品图片| 亚洲女子a中天字幕| 波多野结衣中文字幕一区| 欧美精品一区视频| 久久99精品国产.久久久久 | 日韩av一区二区在线影视| 在线日韩国产精品| 亚洲男人天堂一区| 91首页免费视频| 亚洲日穴在线视频| 99久久99精品久久久久久| 国产精品久久久久久一区二区三区| 久久99国产精品久久99果冻传媒| 欧美日韩不卡一区| 亚洲福利一二三区| 欧美高清一级片在线| 日日夜夜精品视频免费| 91精品国产一区二区三区| 人禽交欧美网站| 日韩一区二区三区四区五区六区| 日本亚洲最大的色成网站www| 69p69国产精品| 日韩不卡一区二区| 亚洲精品视频观看| 91香蕉视频mp4| 洋洋成人永久网站入口| 欧美日韩一级二级| 蜜臀99久久精品久久久久久软件| 日韩女优毛片在线| 国产成人av一区| 亚洲视频精选在线| 欧美日韩国产一级| 国内一区二区视频| 中文字幕视频一区二区三区久| 91麻豆福利精品推荐| 午夜激情一区二区| 精品盗摄一区二区三区| 国产福利精品一区二区| 亚洲品质自拍视频| 欧美在线观看一区| 国内外成人在线| 亚洲欧美日本在线| 91精品国产麻豆| 国产精品中文字幕日韩精品| 麻豆成人在线观看| 国产精品久久久久一区二区三区| 欧美网站一区二区| 国产在线麻豆精品观看| 中文字幕在线一区免费| 69堂成人精品免费视频| 夫妻av一区二区| 亚洲第一主播视频| 国产日韩欧美精品综合| 精品视频1区2区| 一区二区三区欧美亚洲| 久久综合久久鬼色中文字| 91极品视觉盛宴| 国产一区不卡在线| 日韩专区在线视频| 1区2区3区精品视频| 日韩一级免费观看| 日本韩国视频一区二区| 国产成人无遮挡在线视频| 亚洲福利电影网| 国产精品久久久久精k8| 日韩欧美的一区| 欧美少妇一区二区| 99久久精品久久久久久清纯| 麻豆91免费观看| 亚洲午夜免费电影| 国产精品传媒视频| 久久久www免费人成精品| 欧美片网站yy| 91小视频在线免费看| 国产一区二区福利| 久久成人麻豆午夜电影| 香蕉加勒比综合久久| 亚洲人成7777| 欧美国产亚洲另类动漫| 日韩精品一区二区三区在线| 欧美日韩一区高清| 色婷婷av一区二区三区gif| 成人精品亚洲人成在线| 国产福利一区二区三区在线视频| 日本伊人色综合网| 视频一区二区三区入口| 亚洲一区二区在线播放相泽| 最新成人av在线| 国产精品拍天天在线| 精品粉嫩超白一线天av| 日韩午夜在线观看视频| 7777精品伊人久久久大香线蕉完整版 | 久久久精品2019中文字幕之3| 在线综合视频播放| 91精品久久久久久蜜臀| 欧美精品在欧美一区二区少妇| 在线观看视频91| 欧美视频在线一区二区三区| 色狠狠av一区二区三区| 91电影在线观看| 欧美日韩你懂得| 欧美乱妇23p| 欧美一区二视频| 日韩免费高清av| 精品少妇一区二区三区在线播放| 制服丝袜在线91| 日韩欧美国产一区在线观看| 欧美一区二区国产| 亚洲精品在线电影| 国产欧美日韩精品a在线观看| 国产三级久久久| 18成人在线视频| 亚洲福利电影网| 蜜臀精品久久久久久蜜臀| 麻豆国产精品777777在线| 国产一区二区主播在线| 高清免费成人av| 色菇凉天天综合网| 欧美一级搡bbbb搡bbbb| 精品欧美黑人一区二区三区| 久久综合九色综合97婷婷| 久久久91精品国产一区二区三区| 国产精品福利一区| 亚洲成av人在线观看| 精品一区二区在线观看| 成人av资源在线| 欧美三级欧美一级| 精品国产凹凸成av人导航| 中文字幕一区二区三区不卡| 午夜精品爽啪视频| 国产精品66部| 在线观看91视频| xfplay精品久久| 一区二区三区四区视频精品免费| 日韩福利视频网| 成人丝袜视频网| 5858s免费视频成人| 亚洲国产经典视频| 日本不卡1234视频| 91欧美一区二区| 精品久久久久一区| 一区二区三区视频在线看| 精品亚洲国内自在自线福利| 99精品桃花视频在线观看| 欧美videos中文字幕| 亚洲另类一区二区| 国产在线播放一区三区四| 在线精品视频免费播放| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲综合男人的天堂| 懂色av一区二区夜夜嗨| 日韩一区二区三免费高清| 一个色综合av| 成人激情小说乱人伦| 久久只精品国产| 日本aⅴ精品一区二区三区| 色婷婷国产精品综合在线观看| 久久免费视频色| 日本免费新一区视频| 91精品福利视频| 日韩毛片在线免费观看| 国产精品一二三在| 日韩一级成人av| 视频在线观看国产精品| 在线看日本不卡| 亚洲欧美电影院| 91网站在线观看视频| 中文字幕免费在线观看视频一区| 极品尤物av久久免费看| 欧美一二三区在线| 日日夜夜精品视频天天综合网| 色狠狠一区二区三区香蕉| 中文字幕色av一区二区三区| 国产超碰在线一区| 久久精品男人天堂av| 国产一区日韩二区欧美三区| 精品日产卡一卡二卡麻豆| 蜜桃精品视频在线| 日韩一区二区电影在线| 免费在线视频一区| 欧美一级黄色大片| 久久精品国产亚洲a| 精品国精品国产| 国产九色sp调教91| 国产日韩v精品一区二区|