OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [x86_64/] [lib/] [getuser.S] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1275 phoenix
/*
2
 * __get_user functions.
3
 *
4
 * (C) Copyright 1998 Linus Torvalds
5
 *
6
 * These functions have a non-standard call interface
7
 * to make them more efficient, especially as they
8
 * return an error value in addition to the "real"
9
 * return value.
10
 */
11
 
12
/*
13
 * __get_user_X
14
 *
15
 * Inputs:      %rax contains the address
16
 *
17
 * Outputs:     %rax is error code (0 or -EFAULT)
18
 *              %rdx contains zero-extended value
19
 *
20
 * %rbx is destroyed.
21
 *
22
 * These functions should not modify any other registers,
23
 * as they get called from within inline assembly.
24
 */
25
 
26
#include 
27
#include 
28
#include 
29
#include 
30
#include 
31
#include 
32
 
33
        .text
34
        .p2align
35
.globl __get_user_1
36
__get_user_1:
37
        GET_CURRENT(%rbx)
38
        cmpq tsk_addr_limit(%rbx),%rax
39
        jae bad_get_user
40
1:      movzb (%rax),%edx
41
        xorq %rax,%rax
42
        ret
43
 
44
        .p2align
45
.globl __get_user_2
46
__get_user_2:
47
        GET_CURRENT(%rbx)
48
        addq $1,%rax
49
        jc bad_get_user
50
        cmpq tsk_addr_limit(%rbx),%rax
51
        jae      bad_get_user
52
2:      movzwl -1(%rax),%edx
53
        xorq %rax,%rax
54
        ret
55
 
56
        .p2align
57
.globl __get_user_4
58
__get_user_4:
59
        GET_CURRENT(%rbx)
60
        addq $3,%rax
61
        jc bad_get_user
62
        cmpq tsk_addr_limit(%rbx),%rax
63
        jae bad_get_user
64
3:      movl -3(%rax),%edx
65
        xorq %rax,%rax
66
        ret
67
 
68
        .p2align
69
.globl __get_user_8
70
__get_user_8:
71
        GET_CURRENT(%rbx)
72
        addq $7,%rax
73
        jc bad_get_user
74
        cmpq tsk_addr_limit(%rbx),%rax
75
        jae     bad_get_user
76
4:      movq -7(%rax),%rdx
77
        xorq %rax,%rax
78
        ret
79
 
80
ENTRY(bad_get_user)
81
bad_get_user:
82
        xorq %rdx,%rdx
83
        movq $(-EFAULT),%rax
84
        ret
85
 
86
.section __ex_table,"a"
87
        .quad 1b,bad_get_user
88
        .quad 2b,bad_get_user
89
        .quad 3b,bad_get_user
90
        .quad 4b,bad_get_user
91
.previous

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.