|
|
1.1 root 1: |
2:
3: | quickzero(char *place, long size): zero an area of memory. "size" is
4:
5: | the number of 256 byte blocks in the area, and must be > 0.
6:
7: | registers changed: d0 and a0
8:
9: |
10:
11: .globl _quickzero
12:
13: _quickzero:
14:
15: movel sp@(4), a0 | place to zero at
16:
17: movel sp@(8), d0 | number of blocks
18:
19: moveml d1-d7/a1, sp@- | save registers
20:
21: clrl d1 | zero them out
22:
23: movel d1, d2
24:
25: movel d1, d3
26:
27: movel d1, d4
28:
29: movel d1, d5
30:
31: movel d1, d6
32:
33: movel d1, d7
34:
35: movel d1, a1
36:
37: subql #1, d0 | adjust for dbra loop
38:
39: loop:
40:
41: moveml d1-d7/a1, a0@ | zero the memory, 32 bytes at a time
42:
43: moveml d1-d7/a1, a0@(32)
44:
45: moveml d1-d7/a1, a0@(64)
46:
47: moveml d1-d7/a1, a0@(96)
48:
49: moveml d1-d7/a1, a0@(128)
50:
51: moveml d1-d7/a1, a0@(160)
52:
53: moveml d1-d7/a1, a0@(192)
54:
55: moveml d1-d7/a1, a0@(224)
56:
57: lea a0@(256), a0
58:
59: dbra d0, loop
60:
61: |
62:
63: moveml sp@+, d1-d7/a1 | restore regs
64:
65: rts | and leave
66:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.