Root/
Source at commit 0de2b2b3be81048189a32f7a3d3ba0ba9ec817b6 created 11 years 11 months ago. By Maarten ter Huurne, MIPS: JZ4740: Fixed value for round robin constant. | |
---|---|
1 | /* una_asm.S: Kernel unaligned trap assembler helpers. |
2 | * |
3 | * Copyright (C) 1996,2005,2008 David S. Miller (davem@davemloft.net) |
4 | * Copyright (C) 1996,1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
5 | */ |
6 | |
7 | #include <linux/errno.h> |
8 | |
9 | .text |
10 | |
11 | retl_efault: |
12 | retl |
13 | mov -EFAULT, %o0 |
14 | |
15 | /* int __do_int_store(unsigned long *dst_addr, int size, |
16 | * unsigned long *src_val) |
17 | * |
18 | * %o0 = dest_addr |
19 | * %o1 = size |
20 | * %o2 = src_val |
21 | * |
22 | * Return '0' on success, -EFAULT on failure. |
23 | */ |
24 | .globl __do_int_store |
25 | __do_int_store: |
26 | ld [%o2], %g1 |
27 | cmp %o1, 2 |
28 | be 2f |
29 | cmp %o1, 4 |
30 | be 1f |
31 | srl %g1, 24, %g2 |
32 | srl %g1, 16, %g7 |
33 | 4: stb %g2, [%o0] |
34 | srl %g1, 8, %g2 |
35 | 5: stb %g7, [%o0 + 1] |
36 | ld [%o2 + 4], %g7 |
37 | 6: stb %g2, [%o0 + 2] |
38 | srl %g7, 24, %g2 |
39 | 7: stb %g1, [%o0 + 3] |
40 | srl %g7, 16, %g1 |
41 | 8: stb %g2, [%o0 + 4] |
42 | srl %g7, 8, %g2 |
43 | 9: stb %g1, [%o0 + 5] |
44 | 10: stb %g2, [%o0 + 6] |
45 | b 0f |
46 | 11: stb %g7, [%o0 + 7] |
47 | 1: srl %g1, 16, %g7 |
48 | 12: stb %g2, [%o0] |
49 | srl %g1, 8, %g2 |
50 | 13: stb %g7, [%o0 + 1] |
51 | 14: stb %g2, [%o0 + 2] |
52 | b 0f |
53 | 15: stb %g1, [%o0 + 3] |
54 | 2: srl %g1, 8, %g2 |
55 | 16: stb %g2, [%o0] |
56 | 17: stb %g1, [%o0 + 1] |
57 | 0: retl |
58 | mov 0, %o0 |
59 | |
60 | .section __ex_table,#alloc |
61 | .word 4b, retl_efault |
62 | .word 5b, retl_efault |
63 | .word 6b, retl_efault |
64 | .word 7b, retl_efault |
65 | .word 8b, retl_efault |
66 | .word 9b, retl_efault |
67 | .word 10b, retl_efault |
68 | .word 11b, retl_efault |
69 | .word 12b, retl_efault |
70 | .word 13b, retl_efault |
71 | .word 14b, retl_efault |
72 | .word 15b, retl_efault |
73 | .word 16b, retl_efault |
74 | .word 17b, retl_efault |
75 | .previous |
76 | |
77 | /* int do_int_load(unsigned long *dest_reg, int size, |
78 | * unsigned long *saddr, int is_signed) |
79 | * |
80 | * %o0 = dest_reg |
81 | * %o1 = size |
82 | * %o2 = saddr |
83 | * %o3 = is_signed |
84 | * |
85 | * Return '0' on success, -EFAULT on failure. |
86 | */ |
87 | .globl do_int_load |
88 | do_int_load: |
89 | cmp %o1, 8 |
90 | be 9f |
91 | cmp %o1, 4 |
92 | be 6f |
93 | 4: ldub [%o2], %g1 |
94 | 5: ldub [%o2 + 1], %g2 |
95 | sll %g1, 8, %g1 |
96 | tst %o3 |
97 | be 3f |
98 | or %g1, %g2, %g1 |
99 | sll %g1, 16, %g1 |
100 | sra %g1, 16, %g1 |
101 | 3: b 0f |
102 | st %g1, [%o0] |
103 | 6: ldub [%o2 + 1], %g2 |
104 | sll %g1, 24, %g1 |
105 | 7: ldub [%o2 + 2], %g7 |
106 | sll %g2, 16, %g2 |
107 | 8: ldub [%o2 + 3], %g3 |
108 | sll %g7, 8, %g7 |
109 | or %g3, %g2, %g3 |
110 | or %g7, %g3, %g7 |
111 | or %g1, %g7, %g1 |
112 | b 0f |
113 | st %g1, [%o0] |
114 | 9: ldub [%o2], %g1 |
115 | 10: ldub [%o2 + 1], %g2 |
116 | sll %g1, 24, %g1 |
117 | 11: ldub [%o2 + 2], %g7 |
118 | sll %g2, 16, %g2 |
119 | 12: ldub [%o2 + 3], %g3 |
120 | sll %g7, 8, %g7 |
121 | or %g1, %g2, %g1 |
122 | or %g7, %g3, %g7 |
123 | or %g1, %g7, %g7 |
124 | 13: ldub [%o2 + 4], %g1 |
125 | st %g7, [%o0] |
126 | 14: ldub [%o2 + 5], %g2 |
127 | sll %g1, 24, %g1 |
128 | 15: ldub [%o2 + 6], %g7 |
129 | sll %g2, 16, %g2 |
130 | 16: ldub [%o2 + 7], %g3 |
131 | sll %g7, 8, %g7 |
132 | or %g1, %g2, %g1 |
133 | or %g7, %g3, %g7 |
134 | or %g1, %g7, %g7 |
135 | st %g7, [%o0 + 4] |
136 | 0: retl |
137 | mov 0, %o0 |
138 | |
139 | .section __ex_table,#alloc |
140 | .word 4b, retl_efault |
141 | .word 5b, retl_efault |
142 | .word 6b, retl_efault |
143 | .word 7b, retl_efault |
144 | .word 8b, retl_efault |
145 | .word 9b, retl_efault |
146 | .word 10b, retl_efault |
147 | .word 11b, retl_efault |
148 | .word 12b, retl_efault |
149 | .word 13b, retl_efault |
150 | .word 14b, retl_efault |
151 | .word 15b, retl_efault |
152 | .word 16b, retl_efault |
153 | .previous |
154 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9