⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getuser.s

📁 linux-2.6.15.6
💻 S
字号:
/* *  linux/arch/arm26/lib/getuser.S * *  Copyright (C) 2001 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * *  Idea from x86 version, (C) Copyright 1998 Linus Torvalds * * These functions have a non-standard call interface to make them more * efficient, especially as they return an error value in addition to * the "real" return value. * * __get_user_X * * Inputs:	r0 contains the address * Outputs:	r0 is the error code *		r1, r2 contains the zero-extended value *		lr corrupted * * No other registers must be altered.  (see include/asm-arm/uaccess.h * for specific ASM register usage). * * Note that ADDR_LIMIT is either 0 or 0xc0000000. * Note also that it is intended that __get_user_bad is not global. */#include <asm/asm-offsets.h>#include <asm/thread_info.h>#include <asm/errno.h>        .global __get_user_1__get_user_1:        bic     r1, sp, #0x1f00        bic     r1, r1, #0x00ff        str     lr, [sp, #-4]!        ldr     r1, [r1, #TI_ADDR_LIMIT]        sub     r1, r1, #1        cmp     r0, r1        bge     __get_user_bad        cmp     r0, #0x020000001:      ldrlsbt r1, [r0]        ldrgeb  r1, [r0]        mov     r0, #0        ldmfd   sp!, {pc}^        .global __get_user_2__get_user_2:        bic     r2, sp, #0x1f00        bic     r2, r2, #0x00ff        str     lr, [sp, #-4]!        ldr     r2, [r2, #TI_ADDR_LIMIT]        sub     r2, r2, #2        cmp     r0, r2        bge     __get_user_bad        cmp     r0, #0x020000002:      ldrlsbt r1, [r0], #13:      ldrlsbt r2, [r0]        ldrgeb  r1, [r0], #1        ldrgeb  r2, [r0]        orr     r1, r1, r2, lsl #8        mov     r0, #0        ldmfd   sp!, {pc}^        .global __get_user_4__get_user_4:        bic     r1, sp, #0x1f00        bic     r1, r1, #0x00ff        str     lr, [sp, #-4]!        ldr     r1, [r1, #TI_ADDR_LIMIT]        sub     r1, r1, #4        cmp     r0, r1        bge     __get_user_bad        cmp     r0, #0x020000004:      ldrlst  r1, [r0]        ldrge   r1, [r0]        mov     r0, #0        ldmfd   sp!, {pc}^        .global __get_user_8__get_user_8:        bic     r2, sp, #0x1f00        bic     r2, r2, #0x00ff        str     lr, [sp, #-4]!        ldr     r2, [r2, #TI_ADDR_LIMIT]        sub     r2, r2, #8        cmp     r0, r2        bge     __get_user_bad_8        cmp     r0, #0x020000005:      ldrlst  r1, [r0], #46:      ldrlst  r2, [r0]        ldrge   r1, [r0], #4        ldrge   r2, [r0]        mov     r0, #0        ldmfd   sp!, {pc}^__get_user_bad_8:        mov     r2, #0__get_user_bad:        mov     r1, #0        mov     r0, #-EFAULT        ldmfd   sp!, {pc}^.section __ex_table, "a"	.long	1b, __get_user_bad	.long	2b, __get_user_bad	.long	3b, __get_user_bad	.long	4b, __get_user_bad	.long	5b, __get_user_bad_8	.long	6b, __get_user_bad_8.previous

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -