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/] [io-readsl.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/io-readsl.S
3
 *
4
 *  Copyright (C) 1995-2000 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
#include 
11
#include 
12
 
13
ENTRY(__raw_readsl)
14
                teq     r2, #0          @ do we have to check for the zero len?
15
                moveq   pc, lr
16
                ands    ip, r1, #3
17
                bne     3f
18
 
19
                subs    r2, r2, #4
20
                bmi     2f
21
                stmfd   sp!, {r4, lr}
22
1:              ldr     r3, [r0, #0]
23
                ldr     r4, [r0, #0]
24
                ldr     ip, [r0, #0]
25
                ldr     lr, [r0, #0]
26
                subs    r2, r2, #4
27
                stmia   r1!, {r3, r4, ip, lr}
28
                bpl     1b
29
                ldmfd   sp!, {r4, lr}
30
2:              movs    r2, r2, lsl #31
31
                ldrcs   r3, [r0, #0]
32
                ldrcs   ip, [r0, #0]
33
                stmcsia r1!, {r3, ip}
34
                ldrne   r3, [r0, #0]
35
                strne   r3, [r1, #0]
36
                mov     pc, lr
37
 
38
3:              ldr     r3, [r0]
39
                cmp     ip, #2
40
                mov     ip, r3, get_byte_0
41
                strb    ip, [r1], #1
42
                bgt     6f
43
                mov     ip, r3, get_byte_1
44
                strb    ip, [r1], #1
45
                beq     5f
46
                mov     ip, r3, get_byte_2
47
                strb    ip, [r1], #1
48
 
49
4:              subs    r2, r2, #1
50
                mov     ip, r3, pull #24
51
                ldrne   r3, [r0]
52
                orrne   ip, ip, r3, push #8
53
                strne   ip, [r1], #4
54
                bne     4b
55
                b       8f
56
 
57
5:              subs    r2, r2, #1
58
                mov     ip, r3, pull #16
59
                ldrne   r3, [r0]
60
                orrne   ip, ip, r3, push #16
61
                strne   ip, [r1], #4
62
                bne     5b
63
                b       7f
64
 
65
6:              subs    r2, r2, #1
66
                mov     ip, r3, pull #8
67
                ldrne   r3, [r0]
68
                orrne   ip, ip, r3, push #24
69
                strne   ip, [r1], #4
70
                bne     6b
71
 
72
                mov     r3, ip, get_byte_2
73
                strb    r3, [r1, #2]
74
7:              mov     r3, ip, get_byte_1
75
                strb    r3, [r1, #1]
76
8:              mov     r3, ip, get_byte_0
77
                strb    r3, [r1, #0]
78
                mov     pc, lr

powered by: WebSVN 2.1.0

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