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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? entry.s

?? 該文件是rt_linux
?? S
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* *  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/smp.h>#include <asm/ptrace.h>#include "asm-offsets.h"/* * Stack layout for the system_call stack entry. * The first few entries are identical to the user_regs_struct. */SP_PTREGS    =  STACK_FRAME_OVERHEAD SP_PSW       =  STACK_FRAME_OVERHEAD + PT_PSWMASKSP_R0        =  STACK_FRAME_OVERHEAD + PT_GPR0SP_R1        =  STACK_FRAME_OVERHEAD + PT_GPR1SP_R2        =  STACK_FRAME_OVERHEAD + PT_GPR2SP_R3        =  STACK_FRAME_OVERHEAD + PT_GPR3SP_R4        =  STACK_FRAME_OVERHEAD + PT_GPR4SP_R5        =  STACK_FRAME_OVERHEAD + PT_GPR5SP_R6        =  STACK_FRAME_OVERHEAD + PT_GPR6SP_R7        =  STACK_FRAME_OVERHEAD + PT_GPR7SP_R8        =  STACK_FRAME_OVERHEAD + PT_GPR8SP_R9        =  STACK_FRAME_OVERHEAD + PT_GPR9SP_R10       =  STACK_FRAME_OVERHEAD + PT_GPR10SP_R11       =  STACK_FRAME_OVERHEAD + PT_GPR11SP_R12       =  STACK_FRAME_OVERHEAD + PT_GPR12SP_R13       =  STACK_FRAME_OVERHEAD + PT_GPR13SP_R14       =  STACK_FRAME_OVERHEAD + PT_GPR14SP_R15       =  STACK_FRAME_OVERHEAD + PT_GPR15SP_AREGS     =  STACK_FRAME_OVERHEAD + PT_ACR0SP_ORIG_R2   =  STACK_FRAME_OVERHEAD + PT_ORIGGPR2/* Now the additional entries */SP_TRAP      =  (SP_ORIG_R2+GPR_SIZE)SP_SIZE      =  (SP_TRAP+4)/* * Base Address of this Module --- saved in __LC_ENTRY_BASE */       .globl entry_baseentry_base:#define BASED(name) name-entry_base(%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        stm     %r13,%r15,__LC_SAVE_AREA        basr    %r13,0                    #  temp base pointer0:	stam    %a2,%a4,__LC_SAVE_AREA+12        l       %r13,.Lentry_base-0b(%r13)# load &entry_base to %r13	.endm        .macro  SAVE_ALL psworg,sync      # system entry macro        tm      \psworg+1,0x01            # test problem state bit	.if	\sync        bz      BASED(1f)                 # skip stack setup save	.else        bnz     BASED(0f)                 # from user -> load kernel stack	l	%r14,__LC_ASYNC_STACK	  # are we already on the async stack ?	slr     %r14,%r15	sra	%r14,13	be	BASED(1f)        l       %r15,__LC_ASYNC_STACK     # load async. stack	b	BASED(1f)	.endif0:      l       %r15,__LC_KERNEL_STACK    # problem state -> load ksp	lam	%a2,%a4,BASED(.Lc_ac)	  # set ac.reg. 2 to primary space					  # and ac.reg. 4 to home space1:      s       %r15,BASED(.Lc_spsize)    # make room for registers & psw        n       %r15,BASED(.Lc0xfffffff8) # align stack pointer to 8        stm     %r0,%r12,SP_R0(%r15)      # store gprs 0-12 to kernel stack        st      %r2,SP_ORIG_R2(%r15)      # store original content of gpr 2        mvc     SP_R13(12,%r15),__LC_SAVE_AREA  # move R13-R15 to stack        stam    %a0,%a15,SP_AREGS(%r15)   # store access registers to kst.        mvc     SP_AREGS+8(12,%r15),__LC_SAVE_AREA+12 # store ac. regs        mvc     SP_PSW(8,%r15),\psworg    # move user PSW to stack        la      %r0,\psworg               # store trap indication        st      %r0,SP_TRAP(%r15)        xc      0(4,%r15),0(%r15)         # clear back chain        .endm        .macro  RESTORE_ALL sync          # system exit macro        mvc     __LC_RETURN_PSW(8),SP_PSW(%r15)  # move user PSW to lowcore        lam     %a0,%a15,SP_AREGS(%r15)   # load the access registers        lm      %r0,%r15,SP_R0(%r15)      # load gprs 0-15 of user        ni      __LC_RETURN_PSW+1,0xfd    # clear wait state bit        lpsw    __LC_RETURN_PSW           # back to caller        .endm        .macro  GET_CURRENT	l	%r9,BASED(.Lc0xffffe000)  # load pointer to task_struct to %r9	al	%r9,__LC_KERNEL_STACK        .endm/* * Scheduler resume function, called by switch_to *  gpr2 = (task_struct *) prev *  gpr3 = (task_struct *) next * Returns: *  gpr2 = prev */        .globl  resumeresume:        basr    %r1,0resume_base:	tm	__THREAD_per(%r3),0xe8		# new process is using per ?	bz	resume_noper-resume_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      resume_noper-resume_base(%r1)	# we got away w/o bashing TLB's        lctl    %c9,%c11,__THREAD_per(%r3)	# Nope we didn'tresume_noper:        stm     %r6,%r15,24(%r15)       # store resume 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	stam    %a2,%a2,__THREAD_ar2(%r2)	# store kernel access reg. 2	stam    %a4,%a4,__THREAD_ar4(%r2)	# store kernel access reg. 4	lam     %a2,%a2,__THREAD_ar2(%r3)	# load kernel access reg. 2	lam     %a4,%a4,__THREAD_ar4(%r3)	# load kernel access reg. 4	lm	%r6,%r15,24(%r15)	# load resume registers of next task	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:	stm	%r12,%r15,24(%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,24(%r12)	br	%r14	/* * SVC interrupt handler routine. System calls are synchronous events and * are executed with interrupts enabled. */	.globl  system_callsystem_call:	SAVE_ALL_BASE        SAVE_ALL __LC_SVC_OLD_PSW,1	lh	%r8,0x8a	  # get svc number from lowcore        sll     %r8,2        GET_CURRENT               # load pointer to task_struct to R9        stosm   24(%r15),0x03     # reenable interrupts        l       %r8,sys_call_table-entry_base(%r8,%r13) # get system call addr.        tm      __TASK_ptrace+3(%r9),0x02 # PT_TRACESYS        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) # no-> skip resched & signal## check, if reschedule is needed#        icm     %r0,15,__TASK_need_resched(%r9)        bnz     BASED(sysc_reschedule)        icm     %r0,15,__TASK_sigpending(%r9)        bnz     BASED(sysc_signal_return)sysc_leave:	stnsm   24(%r15),0xfc     # disable I/O and ext. interrupts        RESTORE_ALL 1## call do_signal before return#sysc_signal_return:             la      %r2,SP_PTREGS(%r15) # load pt_regs        sr      %r3,%r3           # clear *oldset        l       %r1,BASED(.Ldo_signal)	la      %r14,BASED(sysc_leave)        br      %r1               # return point is sysc_leave## call schedule with sysc_return as return-address#sysc_reschedule:                l       %r1,BASED(.Lschedule)	la      %r14,BASED(sysc_return)        br      %r1               # call scheduler, return to sysc_return## call trace before and after sys_call#sysc_tracesys:	la	%r11,BASED(sysc_return)## call syscall_trace before and after system call# special linkage: %r11 contains the return address for trace_svc#trace_svc:        l       %r1,BASED(.Ltrace)	l       %r7,BASED(.Lc_ENOSYS)	st      %r7,SP_R2(%r15)   # give sysc_trace an -ENOSYS retval        basr    %r14,%r1	l       %r2,SP_R2(%r15)	cr      %r2,%r7		  # compare with saved -ENOSYS	be      BASED(trace_svc_go) # strace changed the syscall ?	sll     %r2,24	srl     %r2,22        l       %r8,sys_call_table-entry_base(%r2,%r13) # get system call addr.trace_svc_go:	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 value        l       %r1,BASED(.Ltrace)	lr	%r14,%r11	  # return point is in %r11        br      %r1## a new process exits the kernel with ret_from_fork#        .globl  ret_from_forkret_from_fork:          basr    %r13,0        l       %r13,.Lentry_base-.(%r13)  # setup base pointer to &entry_base        GET_CURRENT               # load pointer to task_struct to R9        stosm   24(%r15),0x03     # reenable interrupts        sr      %r0,%r0           # child returns 0        st      %r0,SP_R2(%r15)   # store return value (change R2 on stack)        l       %r1,BASED(.Lschedtail)	la      %r14,BASED(sysc_return)        br      %r1               # call schedule_tail, return to 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

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品在线一区二区| 99re这里只有精品视频首页| 欧美精品粉嫩高潮一区二区| 午夜精品久久久久久久久久| 欧美日韩综合不卡| 日本亚洲最大的色成网站www| 欧美美女激情18p| 麻豆91在线观看| 久久综合av免费| 成人av网站在线| 亚洲国产精品综合小说图片区| 欧美精品日韩一区| 激情五月激情综合网| 国产精品久久久久久亚洲毛片| 91亚洲精品乱码久久久久久蜜桃| 亚洲国产精品久久久久婷婷884| 欧美一区二区三区免费视频| 国产一区999| 综合久久国产九一剧情麻豆| 91官网在线免费观看| 青青草97国产精品免费观看| 久久精品亚洲精品国产欧美kt∨ | 一区二区三区在线观看欧美 | 亚洲妇女屁股眼交7| 日韩欧美在线影院| 成人app网站| 亚洲一区二区偷拍精品| 欧美成人猛片aaaaaaa| 99亚偷拍自图区亚洲| 日日噜噜夜夜狠狠视频欧美人 | 国产一区二区在线视频| 亚洲色图清纯唯美| 日韩午夜av电影| 成年人国产精品| 天使萌一区二区三区免费观看| 国产日韩影视精品| 欧美美女网站色| 99精品偷自拍| 蜜臀国产一区二区三区在线播放| 亚洲欧洲日产国产综合网| 91.com视频| 91香蕉视频污| 激情av综合网| 亚洲不卡av一区二区三区| 中文字幕av一区二区三区| 正在播放亚洲一区| 97精品视频在线观看自产线路二| 久热成人在线视频| 亚洲综合在线观看视频| 亚洲图片欧美激情| 欧美一区二区三区播放老司机| www.亚洲激情.com| 国产露脸91国语对白| 亚洲成人第一页| 亚洲视频一区二区在线观看| 精品国产乱码久久久久久老虎| 欧美视频精品在线观看| 99re6这里只有精品视频在线观看| 麻豆精品蜜桃视频网站| 亚洲午夜在线观看视频在线| 中文字幕不卡在线| 日本一区二区在线不卡| 日韩视频免费观看高清完整版| 色爱区综合激月婷婷| 成人中文字幕在线| 国产在线精品国自产拍免费| 免费成人美女在线观看.| 亚洲一区二区免费视频| 亚洲色图欧美激情| 亚洲色图另类专区| 1区2区3区精品视频| 国产精品成人免费精品自在线观看| 久久久久久黄色| 国产亚洲一区二区在线观看| 精品国产精品一区二区夜夜嗨| 91精选在线观看| 欧美二区三区91| 91精品国产91久久久久久一区二区 | 国产精品伦理一区二区| 国产欧美日韩亚州综合| 国产午夜亚洲精品午夜鲁丝片| 久久嫩草精品久久久精品| 欧美tickling挠脚心丨vk| 日韩欧美国产1| 精品国产污污免费网站入口 | 国产精品久久久久久久浪潮网站| 久久精品一区二区三区四区| 国产午夜精品一区二区三区视频| 久久影院视频免费| 国产精品午夜在线观看| 亚洲国产日韩av| 日韩精品视频网| 久久99久久久久| 国产精品一区二区男女羞羞无遮挡| 国产黄色精品网站| 不卡一区中文字幕| 日本高清不卡aⅴ免费网站| 欧美丝袜丝nylons| 欧美一区二区三区四区在线观看| 欧美一区二区视频在线观看2020 | 免费精品视频在线| 国产综合一区二区| 成人中文字幕合集| 欧亚洲嫩模精品一区三区| 欧美日韩一区中文字幕| 欧美电影免费观看完整版| 国产香蕉久久精品综合网| 亚洲老司机在线| 久久91精品久久久久久秒播| 国产xxx精品视频大全| 色呦呦一区二区三区| 91精品国产综合久久久久久久 | 韩国欧美国产一区| 99精品一区二区三区| 7777精品伊人久久久大香线蕉最新版| 精品日韩一区二区三区| 国产精品二三区| 日av在线不卡| 成人涩涩免费视频| 欧美三区在线视频| 国产无遮挡一区二区三区毛片日本| 亚洲人成7777| 久久国产精品区| 一本大道久久精品懂色aⅴ| 91精品国产综合久久久蜜臀图片| 欧美激情在线一区二区三区| 亚洲一二三四区不卡| 国产成人精品一区二区三区四区| 欧美日韩小视频| 国产精品天干天干在线综合| 婷婷综合另类小说色区| 国产+成+人+亚洲欧洲自线| 欧美美女黄视频| 最新国产成人在线观看| 国产中文一区二区三区| 欧美亚洲一区二区三区四区| 国产日产欧美精品一区二区三区| 一区二区三区四区激情| 国产福利一区二区三区视频在线| 7777精品伊人久久久大香线蕉超级流畅| 国产蜜臀97一区二区三区| 日日欢夜夜爽一区| 日本精品视频一区二区三区| 久久婷婷国产综合国色天香| 丝袜美腿一区二区三区| 色偷偷久久人人79超碰人人澡 | 日韩一卡二卡三卡国产欧美| 一区二区三区免费网站| 波多野结衣一区二区三区| 精品sm捆绑视频| 免费xxxx性欧美18vr| 欧美日韩国产色站一区二区三区| 国产精品久久久久三级| 国产精品91一区二区| 日韩欧美激情在线| 视频一区二区三区中文字幕| 一本大道久久a久久综合婷婷| 国产精品久久久久久久久免费丝袜 | 成人高清视频在线| 国产日韩欧美电影| 国产一区二区三区精品欧美日韩一区二区三区| 欧美日韩精品一区二区三区四区| 18成人在线视频| av高清不卡在线| 国产精品毛片大码女人| 国产精品 欧美精品| 久久青草国产手机看片福利盒子 | 久久精品99国产精品日本| 制服丝袜亚洲播放| 五月天中文字幕一区二区| 欧美三级乱人伦电影| 亚洲一区精品在线| 欧美在线影院一区二区| 亚洲成a人v欧美综合天堂下载 | 欧美精品免费视频| 亚洲va中文字幕| 欧美精品1区2区| 美国十次综合导航| www久久久久| 懂色av噜噜一区二区三区av| 久久久久久久久久久久久夜| 国产福利一区二区三区| 国产精品日日摸夜夜摸av| 99re热这里只有精品视频| 亚洲另类在线视频| 欧美日韩免费一区二区三区视频| 激情综合一区二区三区| 久久久不卡网国产精品二区| 成人性生交大片免费看中文网站| 国产精品免费看片| 99国产精品久久久久久久久久久| 一区二区三区在线免费视频| 欧美精品亚洲一区二区在线播放| 久久不见久久见免费视频7 | 国产不卡高清在线观看视频| 亚洲少妇中出一区| 欧美另类高清zo欧美| 国产在线精品一区二区不卡了| 国产精品国产三级国产专播品爱网| 91福利在线看|