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

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

?? entry.s

?? 優龍2410linux2.6.8內核源代碼
?? S
?? 第 1 頁 / 共 2 頁
字號:
/* *  arch/s390/kernel/entry.S *    S390 low-level entry points. * *  S390 version *    Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation *    Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), *               Hartmut Penner (hp@de.ibm.com), *               Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com), */#include <linux/sys.h>#include <linux/linkage.h>#include <linux/config.h>#include <asm/cache.h>#include <asm/lowcore.h>#include <asm/errno.h>#include <asm/ptrace.h>#include <asm/thread_info.h>#include <asm/offsets.h>#include <asm/unistd.h>/* * Stack layout for the system_call stack entry. * The first few entries are identical to the user_regs_struct. */SP_PTREGS    =  STACK_FRAME_OVERHEADSP_ARGS      =  STACK_FRAME_OVERHEAD + __PT_ARGSSP_PSW       =  STACK_FRAME_OVERHEAD + __PT_PSWSP_R0        =  STACK_FRAME_OVERHEAD + __PT_GPRSSP_R1        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 4SP_R2        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 8SP_R3        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 12SP_R4        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 16SP_R5        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 20SP_R6        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 24SP_R7        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 28SP_R8        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 32SP_R9        =  STACK_FRAME_OVERHEAD + __PT_GPRS + 36SP_R10       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 40SP_R11       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 44SP_R12       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 48SP_R13       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 52SP_R14       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 56SP_R15       =  STACK_FRAME_OVERHEAD + __PT_GPRS + 60SP_ORIG_R2   =  STACK_FRAME_OVERHEAD + __PT_ORIG_GPR2SP_ILC       =  STACK_FRAME_OVERHEAD + __PT_ILCSP_TRAP      =  STACK_FRAME_OVERHEAD + __PT_TRAPSP_SIZE      =  STACK_FRAME_OVERHEAD + __PT_SIZE_TIF_WORK_SVC = (_TIF_SIGPENDING | _TIF_NEED_RESCHED | \		 _TIF_RESTART_SVC | _TIF_SINGLE_STEP )_TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NEED_RESCHED)#define BASED(name) name-system_call(%r13)/* * Register usage in interrupt handlers: *    R9  - pointer to current task structure *    R13 - pointer to literal pool *    R14 - return register for function calls *    R15 - kernel stack pointer */	.macro	SAVE_ALL_BASE savearea	stm	%r12,%r15,\savearea	l	%r13,__LC_SVC_NEW_PSW+4	# load &system_call to %r13	.endm	.macro	SAVE_ALL psworg,savearea,sync	la	%r12,\psworg	.if	\sync	tm	\psworg+1,0x01		# test problem state bit	bz	BASED(2f)		# skip stack setup save	l	%r15,__LC_KERNEL_STACK	# problem state -> load ksp	.else	tm	\psworg+1,0x01		# test problem state bit	bnz	BASED(1f)		# from user -> load async stack	clc	\psworg+4(4),BASED(.Lcritical_end)	bhe	BASED(0f)	clc	\psworg+4(4),BASED(.Lcritical_start)	bl	BASED(0f)	l	%r14,BASED(.Lcleanup_critical)	basr	%r14,%r14	tm	0(%r12),0x01		# retest problem state after cleanup	bnz	BASED(1f)0:	l	%r14,__LC_ASYNC_STACK	# are we already on the async stack ?	slr	%r14,%r15	sra	%r14,13	be	BASED(2f)1:	l	%r15,__LC_ASYNC_STACK	.endif2:	s	%r15,BASED(.Lc_spsize)	# make room for registers & psw	mvc	SP_PSW(8,%r15),0(%r12)	# move user PSW to stack	la	%r12,\psworg	st	%r2,SP_ORIG_R2(%r15)	# store original content of gpr 2	icm	%r12,12,__LC_SVC_ILC	stm	%r0,%r11,SP_R0(%r15)	# store gprs %r0-%r11 to kernel stack	st	%r12,SP_ILC(%r15)	mvc	SP_R12(16,%r15),\savearea # move %r12-%r15 to stack	la	%r12,0	st	%r12,0(%r15)		# clear back chain	.endm	.macro  RESTORE_ALL sync	mvc	__LC_RETURN_PSW(8),SP_PSW(%r15) # move user PSW to lowcore	.if !\sync	ni	__LC_RETURN_PSW+1,0xfd	# clear wait state bit	.endif	lm	%r0,%r15,SP_R0(%r15)	# load gprs 0-15 of user	lpsw	__LC_RETURN_PSW		# back to caller	.endm/* * Scheduler resume function, called by switch_to *  gpr2 = (task_struct *) prev *  gpr3 = (task_struct *) next * Returns: *  gpr2 = prev */        .globl  __switch_to__switch_to:        basr    %r1,0__switch_to_base:	tm	__THREAD_per(%r3),0xe8		# new process is using per ?	bz	__switch_to_noper-__switch_to_base(%r1)	# if not we're fine        stctl   %c9,%c11,24(%r15)		# We are using per stuff        clc     __THREAD_per(12,%r3),24(%r15)        be      __switch_to_noper-__switch_to_base(%r1)	# we got away w/o bashing TLB's        lctl    %c9,%c11,__THREAD_per(%r3)	# Nope we didn't__switch_to_noper:        stm     %r6,%r15,24(%r15)       # store __switch_to registers of prev task	st	%r15,__THREAD_ksp(%r2)	# store kernel stack to prev->tss.ksp	l	%r15,__THREAD_ksp(%r3)	# load kernel stack from next->tss.ksp	lm	%r6,%r15,24(%r15)	# load __switch_to registers of next task	st	%r3,__LC_CURRENT	# __LC_CURRENT = current task struct	l	%r3,__THREAD_info(%r3)  # load thread_info from task struct	st	%r3,__LC_THREAD_INFO	ahi	%r3,8192	st	%r3,__LC_KERNEL_STACK	# __LC_KERNEL_STACK = new kernel stack	br	%r14/* * do_softirq calling function. We want to run the softirq functions on the * asynchronous interrupt stack. */	.global do_call_softirqdo_call_softirq:	stnsm	24(%r15),0xfc	stm	%r12,%r15,28(%r15)	lr	%r12,%r15        basr    %r13,0do_call_base:	l	%r0,__LC_ASYNC_STACK	slr     %r0,%r15	sra	%r0,13	be	0f-do_call_base(%r13)	l	%r15,__LC_ASYNC_STACK0:	sl	%r15,.Lc_overhead-do_call_base(%r13)        st	%r12,0(%r15)	# store backchain	l	%r1,.Ldo_softirq-do_call_base(%r13)	basr	%r14,%r1	lm	%r12,%r15,28(%r12)	ssm	24(%r15)	br	%r14	__critical_start:/* * SVC interrupt handler routine. System calls are synchronous events and * are executed with interrupts enabled. */	.globl  system_callsystem_call:	SAVE_ALL_BASE __LC_SAVE_AREA        SAVE_ALL __LC_SVC_OLD_PSW,__LC_SAVE_AREA,1	lh	%r7,0x8a	  # get svc number from lowcoresysc_do_svc:	l	%r9,__LC_THREAD_INFO	# load pointer to thread_info struct	sla	%r7,2             # *4 and test for svc 0	bnz	BASED(sysc_nr_ok) # svc number > 0	# svc 0: system call number in %r1	cl	%r1,BASED(.Lnr_syscalls)	bnl	BASED(sysc_nr_ok)	lr	%r7,%r1           # copy svc number to %r7	sla	%r7,2             # *4sysc_nr_ok:	mvc	SP_ARGS(4,%r15),SP_R7(%r15)sysc_do_restart:	tm	__TI_flags+3(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)        l       %r8,sys_call_table-system_call(%r7,%r13) # get system call addr.        bnz     BASED(sysc_tracesys)        basr    %r14,%r8          # call sys_xxxx        st      %r2,SP_R2(%r15)   # store return value (change R2 on stack)                                  # ATTENTION: check sys_execve_glue before                                  # changing anything here !!sysc_return:	tm	SP_PSW+1(%r15),0x01	# returning to user ?	bno	BASED(sysc_leave)	tm	__TI_flags+3(%r9),_TIF_WORK_SVC	bnz	BASED(sysc_work)  # there is work to do (signals etc.)sysc_leave:        RESTORE_ALL 1## recheck if there is more work to do#sysc_work_loop:	tm	__TI_flags+3(%r9),_TIF_WORK_SVC	bz	BASED(sysc_leave)      # there is no work to do## One of the work bits is on. Find out which one.#sysc_work:	tm	__TI_flags+3(%r9),_TIF_NEED_RESCHED	bo	BASED(sysc_reschedule)	tm	__TI_flags+3(%r9),_TIF_SIGPENDING	bo	BASED(sysc_sigpending)	tm	__TI_flags+3(%r9),_TIF_RESTART_SVC	bo	BASED(sysc_restart)	tm	__TI_flags+3(%r9),_TIF_SINGLE_STEP	bo	BASED(sysc_singlestep)	b	BASED(sysc_leave)## _TIF_NEED_RESCHED is set, call schedule#	sysc_reschedule:                l       %r1,BASED(.Lschedule)	la      %r14,BASED(sysc_work_loop)	br      %r1		       # call scheduler## _TIF_SIGPENDING is set, call do_signal#sysc_sigpending:     	ni	__TI_flags+3(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP        la      %r2,SP_PTREGS(%r15)    # load pt_regs        sr      %r3,%r3                # clear *oldset        l       %r1,BASED(.Ldo_signal)	basr	%r14,%r1               # call do_signal	tm	__TI_flags+3(%r9),_TIF_RESTART_SVC	bo	BASED(sysc_restart)	b	BASED(sysc_leave)      # out of here, do NOT recheck## _TIF_RESTART_SVC is set, set up registers and restart svc#sysc_restart:	ni	__TI_flags+3(%r9),255-_TIF_RESTART_SVC # clear TIF_RESTART_SVC	l	%r7,SP_R2(%r15)        # load new svc number	sla	%r7,2	mvc	SP_R2(4,%r15),SP_ORIG_R2(%r15) # restore first argument	lm	%r2,%r6,SP_R2(%r15)    # load svc arguments	b	BASED(sysc_do_restart) # restart svc## _TIF_SINGLE_STEP is set, call do_single_step#sysc_singlestep:	ni	__TI_flags+3(%r9),255-_TIF_SINGLE_STEP # clear TIF_SINGLE_STEP	mvi	SP_TRAP+1(%r15),0x28	# set trap indication to pgm check	la	%r2,SP_PTREGS(%r15)	# address of register-save area	l	%r1,BASED(.Lhandle_per)	# load adr. of per handler	la	%r14,BASED(sysc_return)	# load adr. of system return	br	%r1			# branch to do_single_step__critical_end:## call trace before and after sys_call#sysc_tracesys:        l       %r1,BASED(.Ltrace)	la	%r2,SP_PTREGS(%r15)    # load pt_regs	la	%r3,0	srl	%r7,2	st	%r7,SP_R2(%r15)	basr	%r14,%r1	clc	SP_R2(4,%r15),BASED(.Lnr_syscalls)	bnl	BASED(sysc_tracenogo)	l	%r7,SP_R2(%r15)        # strace might have changed the 	sll	%r7,2                  #  system call	l	%r8,sys_call_table-system_call(%r7,%r13)sysc_tracego:	lm	%r3,%r6,SP_R3(%r15)	l	%r2,SP_ORIG_R2(%r15)	basr	%r14,%r8          # call sys_xxx	st	%r2,SP_R2(%r15)   # store return valuesysc_tracenogo:	tm	__TI_flags+3(%r9),(_TIF_SYSCALL_TRACE|_TIF_SYSCALL_AUDIT)        bz      BASED(sysc_return)	l	%r1,BASED(.Ltrace)	la	%r2,SP_PTREGS(%r15)    # load pt_regs	la	%r3,1	la	%r14,BASED(sysc_return)	br	%r1## a new process exits the kernel with ret_from_fork#        .globl  ret_from_forkret_from_fork:	l	%r13,__LC_SVC_NEW_PSW+4	l	%r9,__LC_THREAD_INFO	# load pointer to thread_info struct        l       %r1,BASED(.Lschedtail)	basr    %r14,%r1        stosm   24(%r15),0x03     # reenable interrupts	b	BASED(sysc_return)## clone, fork, vfork, exec and sigreturn need glue,# because they all expect pt_regs as parameter,# but are called with different parameter.# return-address is set up above#sys_clone_glue:         la      %r2,SP_PTREGS(%r15)    # load pt_regs        l       %r1,BASED(.Lclone)        br      %r1                   # branch to sys_clonesys_fork_glue:          la      %r2,SP_PTREGS(%r15)    # load pt_regs        l       %r1,BASED(.Lfork)        br      %r1                   # branch to sys_forksys_vfork_glue:         la      %r2,SP_PTREGS(%r15)    # load pt_regs        l       %r1,BASED(.Lvfork)        br      %r1                   # branch to sys_vforksys_execve_glue:                la      %r2,SP_PTREGS(%r15)   # load pt_regs        l       %r1,BASED(.Lexecve)	lr      %r12,%r14             # save return address        basr    %r14,%r1              # call sys_execve        ltr     %r2,%r2               # check if execve failed        bnz     0(%r12)               # it did fail -> store result in gpr2        b       4(%r12)               # SKIP ST 2,SP_R2(15) after BASR 14,8                                      # in system_call/sysc_tracesyssys_sigreturn_glue:             la      %r2,SP_PTREGS(%r15)   # load pt_regs as parameter        l       %r1,BASED(.Lsigreturn)        br      %r1                   # branch to sys_sigreturnsys_rt_sigreturn_glue:             la      %r2,SP_PTREGS(%r15)   # load pt_regs as parameter        l       %r1,BASED(.Lrt_sigreturn)        br      %r1                   # branch to sys_sigreturn## sigsuspend and rt_sigsuspend need pt_regs as an additional# parameter and they have to skip the store of %r2 into the# user register %r2 because the return value was set in # sigsuspend and rt_sigsuspend already and must not be overwritten!#sys_sigsuspend_glue:            lr      %r5,%r4               # move mask back        lr      %r4,%r3               # move history1 parameter        lr      %r3,%r2               # move history0 parameter        la      %r2,SP_PTREGS(%r15)   # load pt_regs as first parameter

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精东粉嫩av免费一区二区三区| 日韩毛片视频在线看| 成人av在线观| 欧美日韩一区三区| 欧美激情一区二区三区全黄| 日韩精品1区2区3区| 成人精品国产福利| 精品日韩一区二区| 日韩精品亚洲专区| 91成人在线免费观看| 中文一区二区在线观看| 美腿丝袜亚洲色图| 欧美日韩精品二区第二页| 国产精品伦理一区二区| 国产一区二区三区四| 欧美高清视频不卡网| 亚洲精品国产一区二区三区四区在线| 韩国女主播成人在线| 9191精品国产综合久久久久久| 亚洲欧美综合色| 丁香婷婷综合激情五月色| 日韩欧美精品在线视频| 日韩成人免费在线| 欧美日韩另类一区| 亚洲人成亚洲人成在线观看图片| 国产成人综合视频| 欧美一区二区福利在线| 国产精品国产三级国产aⅴ入口| 欧美日韩免费一区二区三区 | av亚洲精华国产精华精华| 日韩视频在线你懂得| 天涯成人国产亚洲精品一区av| 日本韩国一区二区三区| 国产精品理伦片| 白白色 亚洲乱淫| 中文字幕在线不卡| 99国产精品国产精品久久| 国产精品视频在线看| 成人av在线一区二区三区| 国产精品久久久久一区二区三区| 国产精品1024| 国产精品无遮挡| 91蜜桃在线免费视频| 亚洲一级二级在线| 欧美精选午夜久久久乱码6080| 视频一区中文字幕| 日韩一区二区三区在线| 韩国av一区二区| 国产欧美日韩精品一区| 99久久久久久| 亚洲成人免费在线观看| 欧美一三区三区四区免费在线看| 美女性感视频久久| 中文字幕免费观看一区| 91久久精品国产91性色tv| 亚洲国产视频在线| 精品国产一区二区三区av性色| 国产精品一区在线观看乱码 | 亚洲欧美在线另类| 欧美色倩网站大全免费| 麻豆精品国产传媒mv男同| 国产亚洲欧洲997久久综合| 99热国产精品| 免费成人av在线播放| 国产欧美一区二区在线观看| 91热门视频在线观看| 美女一区二区久久| 中文字幕亚洲电影| 日韩一二三四区| 99久久免费精品| 久久99精品久久久久久国产越南| 中文无字幕一区二区三区| 欧美日韩激情一区二区三区| 国产精品影视在线| 五月天精品一区二区三区| 国产色婷婷亚洲99精品小说| 在线观看精品一区| 福利一区在线观看| 日本特黄久久久高潮| 亚洲人成精品久久久久久| 日韩一区二区三区视频| jvid福利写真一区二区三区| 免费观看一级特黄欧美大片| 中文字幕第一页久久| 欧美一区二区私人影院日本| 99久久久免费精品国产一区二区| 午夜伦欧美伦电影理论片| 国产精品激情偷乱一区二区∴| 91精品国产麻豆| 日本高清不卡一区| 波多野结衣中文字幕一区二区三区 | 中文字幕亚洲视频| 日韩免费观看2025年上映的电影| 色欲综合视频天天天| 国产精品91xxx| 男人操女人的视频在线观看欧美 | 欧美mv和日韩mv国产网站| 欧美午夜精品一区二区三区| 菠萝蜜视频在线观看一区| 国内国产精品久久| 日本va欧美va精品发布| 偷拍自拍另类欧美| 一级中文字幕一区二区| 亚洲视频狠狠干| 日本一区二区三区免费乱视频| 欧美大度的电影原声| 91精品国产麻豆| 在线播放日韩导航| 欧美精品日日鲁夜夜添| 欧美日韩成人综合在线一区二区| 色综合av在线| 日本韩国视频一区二区| 色狠狠综合天天综合综合| av电影在线观看不卡 | 老司机精品视频在线| 婷婷国产在线综合| 五月激情综合婷婷| 视频一区国产视频| 免费精品视频在线| 狂野欧美性猛交blacked| 精一区二区三区| 激情综合色播五月| 国产精品一区久久久久| 国产成人免费视频网站高清观看视频 | 欧美日韩国产另类一区| 丁香啪啪综合成人亚洲小说 | 国产一区二区看久久| 蜜桃久久久久久| 久久精品国产澳门| 精品亚洲aⅴ乱码一区二区三区| 精久久久久久久久久久| 国产综合一区二区| 成人精品在线视频观看| www.色精品| 欧美中文字幕不卡| 欧美日韩国产色站一区二区三区| 538在线一区二区精品国产| 欧美三级乱人伦电影| 欧美一区二区三区色| 8x8x8国产精品| 久久女同性恋中文字幕| 成人免费在线播放视频| 日韩久久一区二区| 一区二区三区免费在线观看| 三级欧美韩日大片在线看| 久久精品国产亚洲高清剧情介绍| 国产一区二区精品在线观看| 成人免费三级在线| 欧美网站一区二区| 日韩精品一区二区三区视频| 日本一区二区三区在线不卡 | 欧美日韩极品在线观看一区| 欧美α欧美αv大片| 国产精品福利av| 日韩高清在线一区| 国产91丝袜在线观看| 欧美日本不卡视频| 国产欧美日韩卡一| 亚洲国产精品嫩草影院| 国产一区二区导航在线播放| 色婷婷综合久色| 精品理论电影在线观看 | 欧美精品一区二区高清在线观看| 国产三区在线成人av| 亚洲第一福利一区| 成人一区二区三区中文字幕| 欧美日韩一区二区三区四区五区| 久久久久久一级片| 日韩国产精品久久| 在线观看不卡视频| 国产精品久久久久久福利一牛影视| 日本美女一区二区三区视频| 91玉足脚交白嫩脚丫在线播放| 日韩欧美一区二区免费| 一区二区三区在线视频观看| 国产激情91久久精品导航| 欧美一区三区二区| 午夜精品一区二区三区三上悠亚| 国产久卡久卡久卡久卡视频精品| 欧美日韩成人综合在线一区二区| 亚洲欧美一区二区三区极速播放| 国产一区二区不卡| 日韩午夜在线影院| 香蕉成人啪国产精品视频综合网| 97久久超碰精品国产| 欧美极品少妇xxxxⅹ高跟鞋| 激情图片小说一区| 日韩精品一区二区三区中文精品 | 老司机精品视频在线| 在线观看91av| 偷窥少妇高潮呻吟av久久免费| 在线视频你懂得一区二区三区| 1024国产精品| 91原创在线视频| 亚洲三级在线看| 色婷婷狠狠综合| 亚洲午夜久久久久| 欧美日韩的一区二区| 日本成人在线电影网| 69久久99精品久久久久婷婷|