3ee911dc |
1 | # Assemble with gas |
2 | # --register-prefix-optional --bitwise-or |
3 | |
4 | .macro ldarg arg, stacksz, reg |
5 | move.l (4 + \arg * 4 + \stacksz)(%sp), \reg |
6 | .endm |
7 | |
8 | # write with instructions that have bit0 clear |
9 | .global write_rreg_i0 /* u8 val */ |
10 | write_rreg_i0: |
11 | ldarg 0, 0, d0 |
12 | movea.l #0xa130f1, a0 |
13 | move.b d0, d0 |
14 | move.b d0, d0 |
15 | move.b d0, (a0) |
16 | move.b d0, d0 |
17 | move.b d0, d0 |
18 | move.b d0, d0 |
19 | move.b d0, d0 |
20 | rts |
21 | |
22 | |
23 | .global write_rreg_i1 /* u8 val */ |
24 | write_rreg_i1: |
25 | ldarg 0, 0, d1 |
26 | movea.l #0xa130f1, a0 |
27 | move.b d1, d1 |
28 | move.b d1, d1 |
29 | move.b d1, (a0) |
30 | move.b d1, d1 |
31 | move.b d1, d1 |
32 | move.b d1, d1 |
33 | move.b d1, d1 |
34 | rts |
35 | |
36 | |
37 | .global fillpx16 /* u8 *d, unsigned int blocks, u8 val */ |
38 | fillpx16: |
39 | ldarg 0, 0, a0 |
40 | ldarg 2, 0, d0 |
41 | move.b d0, d1 |
42 | lsl.w #8, d1 |
43 | or.w d1, d0 |
44 | move.w d0, d1 |
45 | swap d0 |
46 | move.w d1, d0 |
47 | ldarg 1, 0, d1 |
48 | subq.l #1, d1 |
49 | movem.l d2, -(sp) |
50 | move.l #32, d2 |
51 | 0: |
52 | movep.l d0, 0(a0) |
53 | movep.l d0, 8(a0) |
54 | movep.l d0, 16(a0) |
55 | movep.l d0, 24(a0) |
56 | add.l d2, a0 |
57 | dbra d1, 0b |
58 | |
59 | movem.l (sp)+, d2 |
60 | rts |
61 | |
62 | |
63 | .global checkpx4 /* u8 *d, unsigned int blocks, u8 val */ |
64 | checkpx4: |
65 | ldarg 0, 0, a0 |
66 | ldarg 2, 0, d0 |
67 | move.b d0, d1 |
68 | lsl.w #8, d1 |
69 | or.w d1, d0 |
70 | move.w d0, d1 |
71 | swap d0 |
72 | move.w d1, d0 |
73 | ldarg 1, 0, d1 |
74 | subq.l #1, d1 |
75 | movem.l d2-d4, -(sp) |
76 | move.w d1, d3 |
77 | move.w d1, d4 |
78 | swap d3 |
79 | 0: |
80 | move.w d4, d1 |
81 | 1: |
82 | movep.l 0(a0), d2 |
83 | addq.l #8, a0 |
84 | cmp.l d0, d2 |
85 | dbne d1, 1b |
86 | dbne d3, 0b |
87 | |
88 | movem.l (sp)+, d2-d4 |
89 | move.l d1, d0 |
90 | cmp.w #-1, d1 |
91 | beq 0f |
92 | moveq.l #0, d0 |
93 | 0: |
94 | rts |
95 | |
96 | |
97 | # vim:filetype=asmM68k:ts=4:sw=4:expandtab |