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

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [arm/] [lib/] [putuser.S] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
/*
2
 *  linux/arch/arm/lib/putuser.S
3
 *
4
 *  Copyright (C) 2001 Russell King
5
 *
6
 * This program is free software; you can redistribute it and/or modify
7
 * it under the terms of the GNU General Public License version 2 as
8
 * published by the Free Software Foundation.
9
 *
10
 *  Idea from x86 version, (C) Copyright 1998 Linus Torvalds
11
 *
12
 * These functions have a non-standard call interface to make
13
 * them more efficient, especially as they return an error
14
 * value in addition to the "real" return value.
15
 *
16
 * __put_user_X
17
 *
18
 * Inputs:      r0 contains the address
19
 *              r2, r3 contains the value
20
 * Outputs:     r0 is the error code
21
 *              lr corrupted
22
 *
23
 * No other registers must be altered.  (see include/asm-arm/uaccess.h
24
 * for specific ASM register usage).
25
 *
26
 * Note that ADDR_LIMIT is either 0 or 0xc0000000
27
 * Note also that it is intended that __put_user_bad is not global.
28
 */
29
#include 
30
 
31
        .global __put_user_1
32
__put_user_1:
33
1:      strbt   r2, [r0]
34
        mov     r0, #0
35
        mov     pc, lr
36
 
37
        .global __put_user_2
38
__put_user_2:
39
        mov     ip, r2, lsr #8
40
#ifndef __ARMEB__
41
2:      strbt   r2, [r0], #1
42
3:      strbt   ip, [r0]
43
#else
44
2:      strbt   ip, [r0], #1
45
3:      strbt   r2, [r0]
46
#endif
47
        mov     r0, #0
48
        mov     pc, lr
49
 
50
        .global __put_user_4
51
__put_user_4:
52
4:      strt    r2, [r0]
53
        mov     r0, #0
54
        mov     pc, lr
55
 
56
        .global __put_user_8
57
__put_user_8:
58
5:      strt    r2, [r0], #4
59
6:      strt    r3, [r0]
60
        mov     r0, #0
61
        mov     pc, lr
62
 
63
__put_user_bad:
64
        mov     r0, #-EFAULT
65
        mov     pc, lr
66
 
67
.section __ex_table, "a"
68
        .long   1b, __put_user_bad
69
        .long   2b, __put_user_bad
70
        .long   3b, __put_user_bad
71
        .long   4b, __put_user_bad
72
        .long   5b, __put_user_bad
73
        .long   6b, __put_user_bad
74
.previous

powered by: WebSVN 2.1.0

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