SDL-1.2.14
[sdl_omap.git] / src / video / riscos / SDL_riscosASM.S
CommitLineData
e14743d1 1;
2; SDL - Simple DirectMedia Layer
3; Copyright (C) 1997-2009 Sam Lantinga
4;
5; This library is free software; you can redistribute it and/or
6; modify it under the terms of the GNU Library General Public
7; License as published by the Free Software Foundation; either
8; version 2 of the License, or (at your option) any later version.
9;
10; This library is distributed in the hope that it will be useful,
11; but WITHOUT ANY WARRANTY; without even the implied warranty of
12; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13; Library General Public License for more details.
14;
15; You should have received a copy of the GNU Library General Public
16; License along with this library; if not, write to the Free
17; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18;
19; Sam Lantinga
20; slouken@libsdl.org
21;
22; Assembler routines for RISC OS display
23;
24
25 AREA |C$$CODE|
26
27 EXPORT |RISCOS_Put32|
28
29; Display 32bpp to 32bpp, 1:1
30;
31; Code provided by Adrain Lees
32;
33; entry a1 -> destination
34; a2 = dest width in pixels
35; a3 = dest line length in bytes
36; a4 = dest height in scanlines
37; arg5 -> source
38; arg6 = byte offset from end of source line to start of next
39
40Arg5 * 10*4
41Arg6 * Arg5+4
42
43RISCOS_Put32 ROUT
44 STMFD sp!,{a2,v1-v6,sl,fp,lr}
45 LDR ip,[sp,#Arg5]
46 MOV lr,a1
47 B ucp64lp
48
4900 ;tail strip of 1-15 pixels
50
51 LDR v1,[ip],#4
5201 SUBS a2,a2,#1
53 STR v1,[lr],#4
54 LDRHI v1,[ip],#4
55 BHI %01
56 B %02
57
58ucp64end ADDS a2,a2,#16
59 BNE %00
60
6102 SUBS a4,a4,#1 ;height--
62 LDRHI v1,[sp,#Arg6]
63 LDRHI a2,[sp] ;reload width
64 BLS %03
65
66 ;move to start of next scanline
67
68 ADD lr,a1,a3
69 ADD a1,a1,a3
70 ADD ip,ip,v1
71
72ucp64lp SUBS a2,a2,#16
73 BLO ucp64end
74
75 PLD [ip,#64]
76
77 LDR v1,[ip],#4
78 LDR v2,[ip],#4
79 LDR v3,[ip],#4
80 LDR v4,[ip],#4
81 LDR v5,[ip],#4
82 LDR v6,[ip],#4
83 LDR sl,[ip],#4
84 LDR fp,[ip],#4
85 STR v1,[lr],#4
86 STR v2,[lr],#4
87 STR v3,[lr],#4
88 STR v4,[lr],#4
89 STR v5,[lr],#4
90 STR v6,[lr],#4
91 STR sl,[lr],#4
92 STR fp,[lr],#4
93
94 PLD [ip,#64]
95
96 LDR v1,[ip],#4
97 LDR v2,[ip],#4
98 LDR v3,[ip],#4
99 LDR v4,[ip],#4
100 LDR v5,[ip],#4
101 LDR v6,[ip],#4
102 LDR sl,[ip],#4
103 LDR fp,[ip],#4
104 STR v1,[lr],#4
105 STR v2,[lr],#4
106 STR v3,[lr],#4
107 STR v4,[lr],#4
108 STR v5,[lr],#4
109 STR v6,[lr],#4
110 STR sl,[lr],#4
111 STR fp,[lr],#4
112
113 B ucp64lp
114
11503 LDMFD sp!,{a2,v1-v6,sl,fp,pc}
116