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

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

?? proc-arm2,3.s

?? 一個2.4.21版本的嵌入式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 bit_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	0		.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	0		.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	0		.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一区二区三区免费野_久草精品视频
一区二区三区在线免费视频 | 精品一区在线看| 亚洲视频资源在线| 亚洲色图19p| 亚洲人妖av一区二区| 亚洲欧美一区二区三区久本道91| 国产精品三级电影| 一区在线中文字幕| 亚洲影院久久精品| 日本在线不卡视频| 极品美女销魂一区二区三区| 国产成人午夜视频| 99精品国产一区二区三区不卡| 成人福利在线看| 色综合久久久久| 欧美久久久久中文字幕| 日韩你懂的电影在线观看| 久久嫩草精品久久久久| 国产精品久久久久aaaa| 午夜欧美视频在线观看| 精品一区二区三区在线观看| 成人国产精品视频| 欧美日韩一区二区在线观看视频| 精品国产亚洲一区二区三区在线观看| 久久毛片高清国产| 夜夜操天天操亚洲| 精品一区二区三区视频在线观看| 成人av电影免费在线播放| 欧美日韩久久一区二区| 久久免费午夜影院| 亚洲chinese男男1069| 久久99日本精品| 在线观看日韩一区| 久久久99免费| 午夜精品爽啪视频| 99在线精品观看| 欧美一区二区视频免费观看| 国产精品嫩草影院av蜜臀| 午夜精品福利久久久| 国产91色综合久久免费分享| 欧美久久一区二区| 亚洲视频在线一区| 国内精品写真在线观看| 欧美日韩国产系列| 亚洲天堂免费在线观看视频| 久久精品二区亚洲w码| 欧美日韩综合一区| 综合久久综合久久| 国产91清纯白嫩初高中在线观看| 在线不卡免费av| 亚洲黄色小视频| 成人免费观看av| 久久午夜电影网| 日韩精品亚洲一区二区三区免费| 91小视频在线| 国产精品乱人伦中文| 国产最新精品免费| 欧美不卡123| 久久成人18免费观看| 欧美精品日韩精品| 亚洲电影激情视频网站| 在线观看免费视频综合| 亚洲黄色尤物视频| 色av成人天堂桃色av| 亚洲日本va午夜在线电影| 99精品桃花视频在线观看| 中文字幕精品综合| 成人看片黄a免费看在线| 久久精品一区二区三区不卡牛牛| 毛片av一区二区| 91精品国产综合久久福利 | 久久免费美女视频| 另类小说视频一区二区| 日韩美女视频在线| 另类成人小视频在线| 精品欧美一区二区在线观看| 日本视频一区二区| 亚洲精品一区二区三区99| 精品中文字幕一区二区小辣椒 | 粉嫩欧美一区二区三区高清影视| 精品剧情在线观看| 国产精一区二区三区| 国产精品色婷婷| 岛国av在线一区| 亚洲黄色性网站| 91麻豆精品国产91久久久资源速度 | 在线播放中文字幕一区| 久久电影网站中文字幕| 国产人伦精品一区二区| 在线一区二区视频| 青娱乐精品在线视频| 欧美精品一区二区久久婷婷| 丰满少妇在线播放bd日韩电影| 最好看的中文字幕久久| 欧美电影在哪看比较好| 精品一区二区成人精品| 国产精品久久久久毛片软件| 欧美色图第一页| 国产一区视频导航| 亚洲男人都懂的| 日韩三级视频中文字幕| 成人一级黄色片| 午夜成人免费电影| 欧美精彩视频一区二区三区| 在线免费观看日本一区| 蜜臀av一级做a爰片久久| 国产精品久久福利| 欧美高清视频不卡网| 国产乱人伦精品一区二区在线观看| 《视频一区视频二区| 日韩欧美三级在线| 91同城在线观看| 国产在线播精品第三| 一区二区三区免费观看| xvideos.蜜桃一区二区| 日本韩国一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 一区二区成人在线视频| 国产三区在线成人av| 欧美色精品在线视频| 国产成人免费在线观看| 日本不卡免费在线视频| 亚洲欧美另类综合偷拍| 国产欧美精品区一区二区三区| 3d动漫精品啪啪| 色偷偷成人一区二区三区91| 国产成人午夜视频| 韩国av一区二区| 麻豆国产欧美日韩综合精品二区 | 亚洲成a人片在线观看中文| 久久精品人人做人人综合 | 国产精品美女一区二区在线观看| 精品视频1区2区3区| 色综合中文综合网| 国产精品久久久久久久第一福利 | 日韩精品一二三区| 亚洲视频一二三区| 国产日韩欧美精品一区| 久久久亚洲精品石原莉奈| 日韩一区二区三区观看| 在线成人免费视频| 6080国产精品一区二区| 欧美日韩成人一区| 欧美日韩在线直播| 欧美性生活影院| 欧美色视频在线观看| 欧美吻胸吃奶大尺度电影| 日本道在线观看一区二区| 91在线国产福利| 色综合色综合色综合| 色婷婷激情综合| 日本韩国欧美三级| 欧美日韩精品久久久| 欧亚洲嫩模精品一区三区| 91久久精品一区二区三| 91高清在线观看| 欧美精品色一区二区三区| 日韩一区和二区| 久久综合成人精品亚洲另类欧美 | 亚洲精品国产第一综合99久久 | 国产亚洲欧美日韩在线一区| 久久久久久久久99精品| 久久日韩粉嫩一区二区三区 | 99精品偷自拍| 欧亚洲嫩模精品一区三区| 欧美日韩精品三区| 日韩欧美色电影| 欧美国产精品专区| 一区二区三区免费看视频| 午夜国产不卡在线观看视频| 国产一区视频网站| 91浏览器在线视频| 51精品国自产在线| 久久夜色精品国产欧美乱极品| 亚洲国产成人在线| 亚洲精品乱码久久久久久| 日韩不卡免费视频| 国产成人在线电影| 欧美色综合久久| 欧美成人三级电影在线| 国产精品传媒入口麻豆| 日本亚洲免费观看| 成人97人人超碰人人99| 欧美疯狂性受xxxxx喷水图片| 精品国产百合女同互慰| 一区二区在线免费观看| 黄色日韩网站视频| 欧美视频自拍偷拍| 国产三级一区二区三区| 亚洲国产一区二区视频| 国产精品91一区二区| 欧美日本免费一区二区三区| 欧美激情综合在线| 日韩av网站免费在线| www.亚洲色图.com| 欧美不卡激情三级在线观看| 亚洲午夜激情av| yourporn久久国产精品| 日韩免费一区二区| 午夜视频在线观看一区二区三区|