|
|
1.1 root 1: ;
2:
3: ; quickmove(char *dst, char *src, long nbytes):
4:
5: ; quickly copy "nbytes" bytes from src to dst. Assumes that both
6:
7: ; src and dst are word aligned.
8:
9: ;
10:
11: SECTION TEXT
12:
13:
14:
15: XDEF _quickmove
16:
17:
18:
19: _quickmove:
20:
21: move.l 4(sp),a0 ; get dst
22:
23: move.l 8(sp),a1 ; get src
24:
25: move.l 12(sp),d0 ; get nbytes
26:
27: lsr.l #8,d0 ;
28:
29: lsr.l #1,d0 ; d0 = nbytes / 512
30:
31: subq.l #1,d0 ; prepare for dbra loop
32:
33: bmi Leftover ; if < 0, skip
34:
35: movem.l d1-d7/a2-a6,-(sp) ; save regs
36:
37: L1:
38:
39: movem.l (a1)+,d1-d7/a2-a6 ; read 12*4 = 48 bytes
40:
41: movem.l d1-d7/a2-a6,(a0) ;
42:
43: movem.l (a1)+,d1-d7/a2-a6 ; 2nd read
44:
45: movem.l d1-d7/a2-a6,48(a0) ;
46:
47: movem.l (a1)+,d1-d7/a2-a6 ; 3rd read
48:
49: movem.l d1-d7/a2-a6,96(a0) ;
50:
51: movem.l (a1)+,d1-d7/a2-a6 ; 4th read
52:
53: movem.l d1-d7/a2-a6,144(a0) ;
54:
55: movem.l (a1)+,d1-d7/a2-a6 ; 5th
56:
57: movem.l d1-d7/a2-a6,192(a0) ;
58:
59: movem.l (a1)+,d1-d7/a2-a6 ; 6th
60:
61: movem.l d1-d7/a2-a6,240(a0) ;
62:
63: movem.l (a1)+,d1-d7/a2-a6 ; 7th
64:
65: movem.l d1-d7/a2-a6,288(a0) ;
66:
67: movem.l (a1)+,d1-d7/a2-a6 ; 8th
68:
69: movem.l d1-d7/a2-a6,336(a0) ;
70:
71: movem.l (a1)+,d1-d7/a2-a6 ; 9th
72:
73: movem.l d1-d7/a2-a6,384(a0) ;
74:
75: movem.l (a1)+,d1-d7/a2-a6 ; 10th
76:
77: movem.l d1-d7/a2-a6,432(a0) ; At this point, 480 bytes done
78:
79: movem.l (a1)+,d1-d7/a2 ; Only do 32 more bytes
80:
81: movem.l d1-d7/a2,480(a0) ; for a total of 512
82:
83:
84:
85: lea 512(a0),a0
86:
87: subq.l #1,d0
88:
89: bge.s L1
90:
91:
92:
93: movem.l (sp)+,d1-d7/a2-a6 ; pop registers
94:
95:
96:
97: Leftover: ; do the remaining bytes
98:
99: move.l 12(sp),d1
100:
101: and.l #$01ff,d1 ; d1 = nbytes % 512
102:
103: subq.l #1,d1 ; prepare for dbra loop
104:
105: bmi.s Ldone
106:
107: L2:
108:
109: move.b (a1)+,(a0)+
110:
111: dbra d1,L2
112:
113: Ldone:
114:
115: rts ; return
116:
117: END
118:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.