📄 uaccess.s
字号:
/* * arch/s390x/lib/uaccess.S * __copy_{from|to}_user functions. * * s390 * Copyright (C) 2000,2002 IBM Deutschland Entwicklung GmbH, IBM Corporation * Authors(s): Martin Schwidefsky (schwidefsky@de.ibm.com) * * These functions have standard call interface */#include <asm/lowcore.h> .text .align 4 .globl __copy_from_user_asm__copy_from_user_asm: lgr %r5,%r3 sacf 5120: mvcle %r2,%r4,0 jo 0b1: sacf 0 lgr %r2,%r5 br %r142: lghi %r1,-4096 lgr %r3,%r4 slgr %r3,%r1 # %r3 = %r4 + 4096 ngr %r3,%r1 # %r3 = (%r4 + 4096) & -4096 slgr %r3,%r4 # %r3 = #bytes to next user page boundary clgr %r5,%r3 # copy crosses next page boundary ? jnh 1b # no, this page fauled # The page after the current user page might have faulted. # We cant't find out which page because the program check handler # might have callled schedule, destroying all lowcore information. # We retry with the shortened length.3: mvcle %r2,%r4,0 jo 3b j 1b .section __ex_table,"a" .quad 0b,2b .quad 3b,1b .previous .align 4 .text .globl __copy_to_user_asm__copy_to_user_asm: lgr %r5,%r3 sacf 5120: mvcle %r4,%r2,0 jo 0b1: sacf 0 lgr %r2,%r3 br %r142: lghi %r1,-4096 lgr %r5,%r4 slgr %r5,%r1 # %r5 = %r4 + 4096 ngr %r5,%r1 # %r5 = (%r4 + 4096) & -4096 slgr %r5,%r4 # %r5 = #bytes to next user page boundary clgr %r3,%r5 # copy crosses next page boundary ? jnh 1b # no, the current page fauled # The page after the current user page might have faulted. # We cant't find out which page because the program check handler # might have callled schedule, destroying all lowcore information. # We retry with the shortened length.3: mvcle %r4,%r2,0 jo 3b j 1b .section __ex_table,"a" .quad 0b,2b .quad 3b,1b .previous .align 4 .text .globl __clear_user_asm__clear_user_asm: lgr %r4,%r2 lgr %r5,%r3 sgr %r2,%r2 sgr %r3,%r3 sacf 5120: mvcle %r4,%r2,0 jo 0b1: sacf 0 br %r142: lgr %r2,%r5 lghi %r1,-4096 slgr %r5,%r1 # %r5 = %r4 + 4096 ngr %r5,%r1 # %r5 = (%r4 + 4096) & -4096 slgr %r5,%r4 # %r5 = #bytes to next user page boundary clgr %r2,%r5 # copy crosses next page boundary ? jnh 1b # no, the current page fauled # The page after the current user page might have faulted. # We cant't find out which page because the program check handler # might have callled schedule, destroying all lowcore information. # We retry with the shortened length. slgr %r2,%r53: mvcle %r4,%r2,0 jo 3b j 1b4: algr %r2,%r5 j 1b .section __ex_table,"a" .quad 0b,2b .quad 3b,4b .previous
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -