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

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

?? entry.s

?? RISC processor ARM-7 emulator
?? S
字號:
/*
    NetWinder Floating Point Emulator
    (c) Rebel.COM, 1998
    (c) 1998, 1999 Philip Blundell

    Direct questions, comments to Scott Bambrough <scottb@netwinder.org>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/

/* This is the kernel's entry point into the floating point emulator.
It is called from the kernel with code similar to this:

	adrsvc	al, r9, ret_from_exception	@ r9  = normal FP return
	adrsvc	al, lr, fpundefinstr		@ lr  = undefined instr return

	get_current_task r10
	mov	r8, #1
	strb	r8, [r10, #TSK_USED_MATH]	@ set current->used_math
	add	r10, r10, #TSS_FPESAVE		@ r10 = workspace
	ldr	r4, .LC2
	ldr	pc, [r4]			@ Call FP emulator entry point

The kernel expects the emulator to return via one of two possible
points of return it passes to the emulator.  The emulator, if
successful in its emulation, jumps to ret_from_exception (passed in
r9) and the kernel takes care of returning control from the trap to
the user code.  If the emulator is unable to emulate the instruction,
it returns via _fpundefinstr (passed via lr) and the kernel halts the
user program with a core dump.

On entry to the emulator r10 points to an area of private FP workspace
reserved in the thread structure for this process.  This is where the
emulator saves its registers across calls.  The first word of this area
is used as a flag to detect the first time a process uses floating point,
so that the emulator startup cost can be avoided for tasks that don't
want it.

This routine does three things:

1) It saves SP into a variable called userRegisters.  The kernel has
created a struct pt_regs on the stack and saved the user registers
into it.  See /usr/include/asm/proc/ptrace.h for details.  The
emulator code uses userRegisters as the base of an array of words from
which the contents of the registers can be extracted.

2) It calls EmulateAll to emulate a floating point instruction.
EmulateAll returns 1 if the emulation was successful, or 0 if not.

3) If an instruction has been emulated successfully, it looks ahead at
the next instruction.  If it is a floating point instruction, it
eecutes the instruction, without returning to user space.  In this
way it repeatedly looks ahead and executes floating point instructions
until it encounters a non floating point instruction, at which time it
returns via _fpreturn.

This is done to reduce the effect of the trap overhead on each
floating point instructions.  GCC attempts to group floating point
instructions to allow the emulator to spread the cost of the trap over
several floating point instructions.  */

@ weiqin: need to set
@ parm r10 - FP working area
@ parm r9  - normal return
@ parm lr  - core dump return
@ will get
@ r0  - 1 for success, 0 for failure

	.globl	nwfpe_enter
nwfpe_enter:
	/* ?? Could put userRegisters and fpa11 into fixed regs during
	   emulation.  This would reduce load/store overhead at the expense
	   of stealing two regs from the register allocator.  Not sure if
	   it's worth it.  */
	ldr r4, =userRegisters
        str sp, [r4]			@ save pointer to user regs
	ldr r4, =fpa11
	str r10, [r4]			@ store pointer to our state
        mov r4, sp			@ use r4 for local pointer
        mov r10, lr			@ save the failure-return addresses

        ldr r5, [r4, #60]	 	@ get contents of PC;
	sub r8, r5, #4
.Lx2:	ldrt r0, [r8]			@ get actual instruction into r0
emulate:
	bl EmulateAll			@ emulate the instruction

@ weiqin: return to the same address in both cases, let the caller check r0
@ to see if the call is successful. Ignore the code below.  We dont
@ let the emulator increment PC otherwise there is problem for debugger.
   	cmp r0, #0			@ was emulation successful
	adfs f0, f0, f0			@ return code
	@ adfeqs f0, f0, f0			@ return code
    @    moveq pc, r10			@ no, return failure

next:
.Lx1:	ldrt r6, [r5], #4		@ get the next instruction and
					@ increment PC

	and   r2, r6, #0x0F000000	@ test for FP insns
        teq   r2, #0x0C000000
        teqne r2, #0x0D000000
        teqne r2, #0x0E000000
	adfnes f0, f0, f0			@ return code
    @    movne pc, r9			@ return ok if not a fp insn

        str r5, [r4, #60]		@ update PC copy in regs

        mov r0, r6			@ save a copy
        ldr r1, [r4, #64]		@ fetch the condition codes
   	bl  checkCondition		@ check the condition
   	cmp r0, #0			@ r0 = 0 ==> condition failed

        @ if condition code failed to match, next insn
   	beq next			@ get the next instruction;
   	    
        mov r0, r6			@ prepare for EmulateAll()
   	b emulate			@ if r0 != 0, goto EmulateAll

	@ We need to be prepared for the instructions at .Lx1 and .Lx2 
	@ to fault.  Emit the appropriate exception gunk to fix things up.
	@ ??? For some reason, faults can happen at .Lx2 even with a
	@ plain LDR instruction.  Weird, but it seems harmless.
	.section .fixup,"ax"
	.align	2
.Lfix:	mov	pc, r9			@ let the user eat segfaults
	.previous

	.section __ex_table,"a"
	.align	3
	.long	.Lx1, .Lfix
	.long	.Lx2, .Lfix
	.previous

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
处破女av一区二区| 最新国产成人在线观看| 日韩一区二区三区视频| 91女厕偷拍女厕偷拍高清| 国产ts人妖一区二区| 国产成人aaa| av成人免费在线| 色综合久久精品| 欧美三区在线观看| 欧美日韩高清不卡| 欧美一级在线视频| 欧美本精品男人aⅴ天堂| 欧美电影免费观看高清完整版| 3atv在线一区二区三区| 日韩女优制服丝袜电影| 久久久亚洲精品石原莉奈| 国产精品全国免费观看高清| 中文字幕一区二区三区在线不卡| 亚洲精品五月天| 天堂资源在线中文精品| 看国产成人h片视频| 国产成人av福利| 在线亚洲一区观看| 日韩欧美一级在线播放| 国产女同性恋一区二区| 亚洲精品va在线观看| 青娱乐精品在线视频| 高清在线成人网| 色狠狠一区二区三区香蕉| 欧美一区二区在线视频| 国产亚洲欧洲997久久综合 | 欧美日韩免费观看一区三区| 7777精品伊人久久久大香线蕉超级流畅 | 欧美写真视频网站| 精品国产一区二区三区忘忧草 | 国产在线不卡一区| 91麻豆精品在线观看| 欧美放荡的少妇| 欧美国产禁国产网站cc| 亚洲成人自拍网| 懂色一区二区三区免费观看| 欧美日韩一区久久| 国产视频不卡一区| 日韩中文字幕一区二区三区| 丁香婷婷综合色啪| 91精品国产一区二区三区蜜臀| 国产精品传媒入口麻豆| 美女性感视频久久| 在线视频你懂得一区二区三区| 久久这里只精品最新地址| 亚洲一区二区三区四区不卡| 国产精品一区二区无线| 制服丝袜日韩国产| 一区二区免费看| 不卡一区中文字幕| 久久婷婷国产综合精品青草| 亚洲.国产.中文慕字在线| av欧美精品.com| 日本一区二区三级电影在线观看| 日日摸夜夜添夜夜添国产精品| 99精品欧美一区| 国产欧美一区二区精品秋霞影院| 麻豆视频观看网址久久| 欧美日韩精品一区二区在线播放| 亚洲女同一区二区| 99久久久无码国产精品| 日本一区免费视频| 国产风韵犹存在线视精品| 精品精品国产高清a毛片牛牛| 亚洲午夜精品在线| 91福利视频在线| 亚洲精品国产精华液| 成人a区在线观看| 国产精品美女久久久久久久久久久| 国产一区激情在线| 久久欧美一区二区| 风间由美一区二区三区在线观看| 精品剧情在线观看| 国产精品一区二区视频| 久久久国产精品不卡| 国产精品99久久久久久久vr| 日韩精品在线一区二区| 狠狠色丁香婷婷综合久久片| 日韩欧美一区二区免费| 激情另类小说区图片区视频区| 精品久久免费看| 国产在线精品一区二区不卡了| 久久久综合网站| 国产不卡一区视频| 亚洲欧美国产三级| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 成人午夜电影久久影院| 亚洲国产精品ⅴa在线观看| 成人免费高清视频| 一区二区三区高清不卡| 91精品国产手机| 国产一二三精品| 1区2区3区精品视频| 欧美日韩视频第一区| 久久精品99国产国产精| 日本一区二区在线不卡| 欧美亚洲国产怡红院影院| 免费在线观看精品| 国产日韩欧美综合在线| 91成人国产精品| 九九精品视频在线看| 舔着乳尖日韩一区| 国产欧美日韩在线| 欧美日韩视频在线一区二区 | 国产成人啪午夜精品网站男同| 国产精品的网站| 欧美疯狂做受xxxx富婆| 国产成人在线视频网址| 亚洲国产综合色| 国产亚洲视频系列| 91麻豆精品国产91久久久久久| 国产乱理伦片在线观看夜一区 | 午夜婷婷国产麻豆精品| 久久蜜臀精品av| 欧美日韩国产经典色站一区二区三区| 国产一区二区0| 午夜私人影院久久久久| 国产精品欧美久久久久一区二区| 欧美精品在线一区二区三区| 国产不卡免费视频| 麻豆一区二区在线| 亚洲综合色婷婷| 亚洲欧美综合色| 久久久av毛片精品| 91精品国产欧美一区二区| 不卡av在线免费观看| 久久丁香综合五月国产三级网站| 一区二区三区国产豹纹内裤在线| 久久久午夜电影| 日韩一区国产二区欧美三区| 在线免费精品视频| 91亚洲男人天堂| 国产成a人无v码亚洲福利| 麻豆精品一二三| 日本sm残虐另类| 日韩和欧美一区二区| 一区二区日韩av| 亚洲乱码一区二区三区在线观看| 久久免费偷拍视频| 久久久夜色精品亚洲| 日韩欧美一区二区三区在线| 国产亚洲午夜高清国产拍精品| 91精品国产综合久久婷婷香蕉| 色一情一伦一子一伦一区| 国产精品系列在线播放| 精品一区二区三区在线播放视频| 日韩精品一级中文字幕精品视频免费观看 | 91麻豆自制传媒国产之光| 国产精品77777竹菊影视小说| 美腿丝袜亚洲综合| 精品在线观看视频| 狠狠色狠狠色综合| 国产成人综合亚洲网站| 懂色一区二区三区免费观看| 国产成人小视频| 成人精品视频一区| 色综合久久久网| 欧美亚洲一区二区在线观看| 欧美视频自拍偷拍| 91精品国产免费久久综合| 日韩美女视频一区二区在线观看| 日韩精品中文字幕在线不卡尤物| 欧美变态tickling挠脚心| 久久综合久色欧美综合狠狠| 国产色产综合色产在线视频| 国产精品久久二区二区| 亚洲天堂福利av| 污片在线观看一区二区| 毛片av一区二区三区| 丁香婷婷综合色啪| 欧美在线|欧美| 日韩亚洲欧美一区| 国产精品久久久久久久第一福利| 国产精品久久久久久久蜜臀| 亚洲线精品一区二区三区| 麻豆久久久久久久| 成人动漫中文字幕| 在线不卡的av| 国产欧美日韩精品在线| 亚洲图片欧美视频| 国产成人一区在线| 欧美视频在线一区二区三区| 日韩一区国产二区欧美三区| 中文av一区二区| 午夜久久久久久| k8久久久一区二区三区| 在线成人av影院| 国产精品激情偷乱一区二区∴| 性欧美疯狂xxxxbbbb| 国产91精品一区二区麻豆亚洲| 欧美自拍丝袜亚洲| 国产校园另类小说区| 五月天视频一区| 91色porny在线视频| 精品国一区二区三区|