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

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

?? entry.s

?? 底層驅動開發
?? S
?? 第 1 頁 / 共 3 頁
字號:
/* *  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), *		 Heiko Carstens <heiko.carstens@de.ibm.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/asm-offsets.h>#include <asm/unistd.h>#include <asm/page.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_MCCK_PENDING | \		 _TIF_RESTART_SVC | _TIF_SINGLE_STEP )_TIF_WORK_INT = (_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_MCCK_PENDING)STACK_SHIFT = PAGE_SHIFT + THREAD_ORDERSTACK_SIZE  = 1 << STACK_SHIFT#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  STORE_TIMER lc_offset#ifdef CONFIG_VIRT_CPU_ACCOUNTING	stpt	\lc_offset#endif	.endm#ifdef CONFIG_VIRT_CPU_ACCOUNTING	.macro  UPDATE_VTIME lc_from,lc_to,lc_sum	lm	%r10,%r11,\lc_from	sl	%r10,\lc_to	sl	%r11,\lc_to+4	bc	3,BASED(0f)	sl	%r10,BASED(.Lc_1)0:	al	%r10,\lc_sum	al	%r11,\lc_sum+4	bc	12,BASED(1f)	al	%r10,BASED(.Lc_1)1:	stm	%r10,%r11,\lc_sum	.endm#endif	.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	1(%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,STACK_SHIFT	be	BASED(2f)1:	l	%r15,__LC_ASYNC_STACK	.endif#ifdef CONFIG_CHECK_STACK	b	BASED(3f)2:	tml	%r15,STACK_SIZE - CONFIG_STACK_GUARD	bz	BASED(stack_overflow)3:#endif2:	.endm	.macro  CREATE_STACK_FRAME psworg,savearea	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,__SF_BACKCHAIN(%r15)	# clear back chain	.endm	.macro  RESTORE_ALL psworg,sync	mvc	\psworg(8),SP_PSW(%r15) # move user PSW to lowcore	.if !\sync	ni	\psworg+1,0xfd		# clear wait state bit	.endif	lm	%r0,%r15,SP_R0(%r15)	# load gprs 0-15 of user	STORE_TIMER __LC_EXIT_TIMER	lpsw	\psworg			# 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,__SF_EMPTY(%r15)	# We are using per stuff        clc     __THREAD_per(12,%r3),__SF_EMPTY(%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:	l	%r4,__THREAD_info(%r2)		# get thread_info of prev	tm	__TI_flags+3(%r4),_TIF_MCCK_PENDING # machine check pending?	bz	__switch_to_no_mcck-__switch_to_base(%r1)	ni	__TI_flags+3(%r4),255-_TIF_MCCK_PENDING # clear flag in prev	l	%r4,__THREAD_info(%r3)		# get thread_info of next	oi	__TI_flags+3(%r4),_TIF_MCCK_PENDING # set it in next__switch_to_no_mcck:        stm     %r6,%r15,__SF_GPRS(%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,__SF_GPRS(%r15)# load __switch_to registers of next task	st	%r3,__LC_CURRENT	# __LC_CURRENT = current task struct	lctl	%c4,%c4,__TASK_pid(%r3) # load pid to control reg. 4	l	%r3,__THREAD_info(%r3)  # load thread_info from task struct	st	%r3,__LC_THREAD_INFO	ahi	%r3,STACK_SIZE	st	%r3,__LC_KERNEL_STACK	# __LC_KERNEL_STACK = new kernel stack	br	%r14__critical_start:/* * SVC interrupt handler routine. System calls are synchronous events and * are executed with interrupts enabled. */	.globl  system_callsystem_call:	STORE_TIMER __LC_SYNC_ENTER_TIMERsysc_saveall:	SAVE_ALL_BASE __LC_SAVE_AREA        SAVE_ALL __LC_SVC_OLD_PSW,__LC_SAVE_AREA,1	CREATE_STACK_FRAME __LC_SVC_OLD_PSW,__LC_SAVE_AREA	lh	%r7,0x8a	  # get svc number from lowcore#ifdef CONFIG_VIRT_CPU_ACCOUNTINGsysc_vtime:	tm	SP_PSW+1(%r15),0x01	# interrupting from user ?	bz	BASED(sysc_do_svc)	UPDATE_VTIME __LC_EXIT_TIMER,__LC_SYNC_ENTER_TIMER,__LC_USER_TIMERsysc_stime:	UPDATE_VTIME __LC_LAST_UPDATE_TIMER,__LC_EXIT_TIMER,__LC_SYSTEM_TIMERsysc_update:	mvc	__LC_LAST_UPDATE_TIMER(8),__LC_SYNC_ENTER_TIMER#endifsysc_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 __LC_RETURN_PSW,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_MCCK_PENDING	bo	BASED(sysc_mcck_pending)	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_MCCK_PENDING is set, call handler#sysc_mcck_pending:	l	%r1,BASED(.Ls390_handle_mcck)	la	%r14,BASED(sysc_work_loop)	br	%r1			# TIF bit will be cleared by handler## _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)	tm	__TI_flags+3(%r9),_TIF_SINGLE_STEP	bo	BASED(sysc_singlestep)	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## 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)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久久久久久久久久电影| 国产裸体歌舞团一区二区| 中文字幕精品综合| 一区在线播放视频| 欧美韩日一区二区三区| 国产精品入口麻豆原神| 亚洲一区二区三区国产| 久久国产精品第一页| 狠狠色伊人亚洲综合成人| 国产麻豆9l精品三级站| 国产一区二三区| 成人h动漫精品一区二| 91福利小视频| 久久午夜国产精品| 一二三四社区欧美黄| 国产一区二区三区观看| 不卡一卡二卡三乱码免费网站| 成人av综合在线| 欧美一区二区三区在| 日韩一区中文字幕| 狠狠色狠狠色合久久伊人| 欧美日韩中文精品| 一区二区三区在线观看动漫| 国产黄色精品视频| 欧美大尺度电影在线| 一区二区在线观看av| 国产一区二区三区国产| 日韩欧美在线观看一区二区三区| 亚洲视频一区在线观看| 国产精品一卡二| 欧美视频在线观看一区| 国产视频一区在线播放| 美女www一区二区| 欧美伊人久久久久久久久影院| 久久综合久久综合九色| 性做久久久久久免费观看欧美| 成人国产精品视频| 精品久久久久久无| 毛片一区二区三区| 欧美精品亚洲二区| 欧美国产精品一区| 高清在线不卡av| 国产日韩成人精品| 极品尤物av久久免费看| 欧美精品 日韩| 五月综合激情网| 99精品1区2区| 最近中文字幕一区二区三区| 国产69精品久久777的优势| 欧美大片一区二区| 午夜日韩在线观看| 欧美人xxxx| 亚洲国产岛国毛片在线| 成人黄色在线视频| 久久久久亚洲蜜桃| 高清在线观看日韩| 国产精品久久久久久久午夜片| 国产一区二区不卡老阿姨| 日韩小视频在线观看专区| 视频在线观看国产精品| 成人高清av在线| 亚洲欧美日韩系列| 555www色欧美视频| 久久机这里只有精品| 欧美成人乱码一区二区三区| 狠狠网亚洲精品| 日本一区二区三区视频视频| 91麻豆免费视频| 亚洲成在人线在线播放| 69堂成人精品免费视频| 极品美女销魂一区二区三区| 国产日产亚洲精品系列| 91麻豆视频网站| 蜜芽一区二区三区| 久久精品人人做| 91亚洲精品一区二区乱码| 一区二区三区视频在线看| 精品视频一区二区三区免费| 视频一区二区欧美| 欧美一区欧美二区| 国产夫妻精品视频| 一区二区三区免费网站| 99久久精品久久久久久清纯| 亚洲一区免费观看| 欧美一区二区播放| 午夜精品福利视频网站| 久久蜜臀精品av| 在线看国产一区| 国产成人在线网站| 亚洲一级二级三级| 日韩一区二区三区精品视频| 成人一二三区视频| 日本亚洲电影天堂| 亚洲视频资源在线| 2019国产精品| 在线观看区一区二| 懂色中文一区二区在线播放| 午夜视频一区二区三区| 国产精品国产a| 精品日韩在线观看| voyeur盗摄精品| 亚洲成在人线免费| 精品久久一区二区三区| 欧美影片第一页| 成人av网址在线| 蜜桃av一区二区三区电影| 最新不卡av在线| xnxx国产精品| 日韩欧美一区在线| 色综合久久久久综合体| 国产精品综合二区| 亚洲大尺度视频在线观看| 国产精品国产三级国产三级人妇| 日韩精品在线一区二区| 欧美日韩高清影院| 国产宾馆实践打屁股91| 久久99精品国产91久久来源| 午夜伊人狠狠久久| 伊人色综合久久天天人手人婷| 精品国产精品一区二区夜夜嗨| 在线观看中文字幕不卡| 国产在线视视频有精品| 天天操天天综合网| 国产精品国产三级国产aⅴ原创| 日韩欧美久久一区| thepron国产精品| 麻豆国产精品一区二区三区| 亚洲成人免费视| ...av二区三区久久精品| 91精品久久久久久久久99蜜臂 | 国产乱码精品一区二区三区av| 亚洲成人综合视频| 亚洲超碰97人人做人人爱| 亚洲激情校园春色| 亚洲一区在线观看免费 | 成人av网站免费观看| 国产精品影音先锋| 国产乱子伦一区二区三区国色天香 | 色老综合老女人久久久| 91在线精品秘密一区二区| 色综合视频在线观看| 91黄色免费观看| 欧美猛男男办公室激情| 日韩免费看的电影| 国产天堂亚洲国产碰碰| 成人欧美一区二区三区在线播放| 中文字幕一区二区三区四区| 一区二区三区欧美| 亚洲人成小说网站色在线| 中文字幕一区二区三中文字幕| 日韩精品最新网址| 欧美精品一级二级| 国产最新精品精品你懂的| 亚洲三级久久久| 伊人夜夜躁av伊人久久| 亚洲福利视频三区| 香蕉乱码成人久久天堂爱免费| 亚洲一本大道在线| 天堂久久一区二区三区| 日韩成人伦理电影在线观看| 免费成人在线网站| 美国十次综合导航| 97久久超碰国产精品电影| 国产成人无遮挡在线视频| 成人午夜电影网站| 国产九色sp调教91| 91无套直看片红桃| 欧美日韩一区国产| 久久午夜羞羞影院免费观看| 亚洲欧洲在线观看av| 五月天视频一区| 精品一区二区免费在线观看| 国产成人精品综合在线观看| 91在线视频官网| 日韩美女一区二区三区四区| 国产精品久久久久久亚洲毛片 | 粉嫩绯色av一区二区在线观看| 精品一区二区在线看| 国产伦精品一区二区三区视频青涩| 蜜桃精品视频在线| 激情六月婷婷久久| 国产成人亚洲精品青草天美| 国产成人精品一区二区三区四区 | 国产精品国产三级国产| 全国精品久久少妇| 成人午夜私人影院| 色婷婷av一区二区三区大白胸| 国产盗摄一区二区| 97精品国产露脸对白| 在线不卡中文字幕| 国产精品青草久久| 激情综合网激情| 91精品国产综合久久婷婷香蕉| 国产精品久99| 国产精品一区专区| 日韩精品中文字幕一区二区三区 | 国产91精品精华液一区二区三区| 日韩一区二区影院| 午夜视黄欧洲亚洲| 欧美精品三级在线观看|