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

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

?? proc-arm2,3.s

?? microwindows移植到S3C44B0的源碼
?? 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一区二区三区免费野_久草精品视频
美女视频网站黄色亚洲| 国内精品国产成人国产三级粉色| 日韩精品一级中文字幕精品视频免费观看| 日韩国产精品91| eeuss鲁片一区二区三区在线观看| 91福利精品视频| 2020国产成人综合网| 亚洲自拍偷拍综合| 成人av综合一区| 精品国产乱码久久| 亚洲va中文字幕| 99国产精品久| 国产女人18水真多18精品一级做| 亚洲亚洲人成综合网络| 国产.欧美.日韩| 日韩欧美一区二区在线视频| 一区二区三区欧美日韩| 丰满亚洲少妇av| 久久久久久久久免费| 日本vs亚洲vs韩国一区三区 | 亚洲妇女屁股眼交7| 成人永久aaa| 久久亚洲一区二区三区四区| 水野朝阳av一区二区三区| 91麻豆精品一区二区三区| 久久久久9999亚洲精品| 久久狠狠亚洲综合| 精品欧美黑人一区二区三区| 视频精品一区二区| 91精品婷婷国产综合久久竹菊| 亚洲欧美日韩国产综合| 97se亚洲国产综合自在线不卡| 国产精品欧美久久久久一区二区| 国产大陆亚洲精品国产| 国产日韩欧美不卡在线| 国产成人亚洲综合色影视| 久久婷婷色综合| 国产呦精品一区二区三区网站| 日本在线不卡一区| 欧美老人xxxx18| 日韩经典中文字幕一区| 91精品国产综合久久久久久漫画| 日本怡春院一区二区| 在线成人av网站| 美女视频黄a大片欧美| 精品国内片67194| 国产一区二区电影| 中文字幕一区av| 91成人国产精品| 五月天婷婷综合| 欧美大尺度电影在线| 国产麻豆一精品一av一免费| 久久久精品天堂| 波多野洁衣一区| 亚洲曰韩产成在线| 91精品欧美福利在线观看 | 一区二区三区在线观看国产| 91丨porny丨国产| 亚洲五码中文字幕| 日韩一区二区免费电影| 国产成人夜色高潮福利影视| ㊣最新国产の精品bt伙计久久| 色欧美片视频在线观看在线视频| 亚洲小说春色综合另类电影| 欧美电视剧在线看免费| 成人免费毛片app| 亚洲成a人v欧美综合天堂| 26uuu亚洲综合色| 91免费精品国自产拍在线不卡| 一区二区成人在线| 久久综合九色欧美综合狠狠| 99精品视频在线播放观看| 亚洲午夜影视影院在线观看| 精品国产成人在线影院| 色婷婷精品久久二区二区蜜臀av| 日本麻豆一区二区三区视频| 中文字幕av一区二区三区| 欧美日韩一区中文字幕| 国产剧情一区二区| 亚洲一二三四在线| 国产欧美日韩中文久久| 欧美美女直播网站| 成人午夜免费电影| 美女网站一区二区| 亚洲永久免费av| 国产欧美视频一区二区| 日韩视频免费观看高清完整版在线观看 | 国产98色在线|日韩| 亚洲综合免费观看高清完整版 | 国产美女在线观看一区| 亚洲专区一二三| 国产精品福利一区| 日韩丝袜美女视频| 欧洲在线/亚洲| 懂色av一区二区在线播放| 丝袜美腿成人在线| 亚洲人成人一区二区在线观看| 久久亚区不卡日本| 91精品国产综合久久精品图片| 国产成人一级电影| 国产一区二区伦理片| 午夜精品视频在线观看| 亚洲男女一区二区三区| 亚洲国产经典视频| 26uuu国产一区二区三区| 欧美日韩在线三级| 色婷婷av一区二区三区gif | 久久狠狠亚洲综合| 天堂一区二区在线免费观看| 亚洲综合一区二区| 亚洲精品ww久久久久久p站| 国产精品日韩成人| 国产精品的网站| 国产天堂亚洲国产碰碰| 久久网这里都是精品| 久久久久久久久99精品| 欧美成人欧美edvon| 日韩欧美国产成人一区二区| 欧美一级一区二区| 日韩午夜在线影院| 日韩午夜激情av| 欧美哺乳videos| 精品日产卡一卡二卡麻豆| 精品国免费一区二区三区| 精品久久国产字幕高潮| 久久蜜桃香蕉精品一区二区三区| 精品欧美一区二区久久| 国产视频视频一区| 精品少妇一区二区三区免费观看| 在线观看成人小视频| 国产很黄免费观看久久| 夫妻av一区二区| 91网上在线视频| 欧美在线看片a免费观看| 欧美性受xxxx黑人xyx性爽| 欧美日产国产精品| 日韩免费电影一区| 中文一区二区完整视频在线观看| 国产精品久久久久久久久果冻传媒 | 在线视频综合导航| 欧美丰满少妇xxxbbb| 26uuu欧美| 亚洲图片你懂的| 亚洲影视在线观看| 久久精品国产99| 不卡区在线中文字幕| 欧美日韩视频不卡| 2023国产精品| 亚洲在线视频网站| 韩国女主播一区| 成人高清视频免费观看| 欧美日韩免费一区二区三区| 日韩欧美国产1| 亚洲婷婷在线视频| 日本vs亚洲vs韩国一区三区二区 | 久久亚洲精品国产精品紫薇 | 久久影院视频免费| ...av二区三区久久精品| 免费成人在线观看视频| 成人av免费在线播放| 91麻豆精品国产91久久久使用方法| 久久只精品国产| 亚洲一级在线观看| 国产.精品.日韩.另类.中文.在线.播放| 日本国产一区二区| 国产日韩av一区二区| 日韩精品免费专区| 成人av免费在线| 久久免费看少妇高潮| 亚洲成人av一区二区三区| 成+人+亚洲+综合天堂| 欧美电影免费观看高清完整版在| 一区二区三区中文字幕| 国产一区久久久| 91精品国产色综合久久不卡电影| 亚洲色图制服诱惑| 丰满白嫩尤物一区二区| 欧美第一区第二区| 日韩精品一卡二卡三卡四卡无卡| 91在线无精精品入口| 国产三区在线成人av| 九九九精品视频| 91精品国产91久久综合桃花| 亚洲日本va在线观看| 岛国av在线一区| 久久蜜桃av一区精品变态类天堂 | 亚洲一区二区三区影院| www.欧美日韩| 国产欧美日韩视频一区二区| 国产一区二区在线视频| 日韩免费看网站| 美女一区二区视频| 91精品国产福利| 男女激情视频一区| 5566中文字幕一区二区电影 | 中文字幕在线观看不卡| 国产一区在线观看视频| 2020日本不卡一区二区视频| 国产一区二区在线影院| 国产午夜精品理论片a级大结局|