|
|
1.1 root 1: /* @(#)bcopy.s 4.4 3/23/84 */
2: /* bcopy(from, to, size) */
3:
4: .globl _bcopy
5: _bcopy:
6: .word 0x001c
7: movl 4(fp),r0
8: movl 8(fp),r1
9: movl 12(fp),r2
10: cmpl r0,r1
11: bgtru 1f # normal forward case
12: beql 2f # equal, nothing to do
13: addl2 r2,r0 # may be overlapping
14: cmpl r0,r1
15: bgtru 3f
16: subl2 r2,r0 # normal forward case
17: 1:
18: movblk
19: 2:
20: ret
21: 3:
22: addl2 r2,r1 # overlapping, must do backwards
23: subl3 r0,r1,r3
24: movl r2,r4
25: jbr 5f
26: 4:
27: subl2 r3,r0
28: subl2 r3,r1
29: movl r3,r2
30: movblk
31: subl2 r3,r0
32: subl2 r3,r1
33: subl2 r3,r4
34: 5:
35: cmpl r4,r3
36: jgtr 4b
37: movl r4,r2
38: subl2 r2,r0
39: subl2 r2,r1
40: movblk
41: ret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.