diff src/video/riscos/SDL_riscosASM.S @ 1459:1e8582152d44

Date: Wed, 01 Mar 2006 10:14:31 +0000 From: "alan buckley" Subject: Re: Updating SDL for RISC OS I've attached a zip file with three diffs to get SDL to build on RISC OS. configure.in.diff and makedeps.sh.diff have been modified so that they can build the assembler file in video/riscos. You may want to double check these as I don't know a lot about unix shell programming. (I've tested them cross-compiling on cygwin). sdlsysthread.diff is the changes required to SDL_systhread.c for RISC OS. As you suspected with these changes in place you can delete the RISC OS specific threading code in thread/riscos. I've also renamed SDL_riscosASM.s to SDL_riscosASM.S, but I'm never quite sure how to rename files in CVS, so if you could to this it would be appreciated.
author Sam Lantinga <slouken@libsdl.org>
date Thu, 02 Mar 2006 03:24:20 +0000
parents
children 99210400e8b9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/video/riscos/SDL_riscosASM.S	Thu Mar 02 03:24:20 2006 +0000
@@ -0,0 +1,116 @@
+;
+;    SDL - Simple DirectMedia Layer
+;    Copyright (C) 1997-2004 Sam Lantinga
+;
+;    This library is free software; you can redistribute it and/or
+;    modify it under the terms of the GNU Library General Public
+;    License as published by the Free Software Foundation; either
+;    version 2 of the License, or (at your option) any later version.
+;
+;    This library is distributed in the hope that it will be useful,
+;    but WITHOUT ANY WARRANTY; without even the implied warranty of
+;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;    Library General Public License for more details.
+;
+;    You should have received a copy of the GNU Library General Public
+;    License along with this library; if not, write to the Free
+;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+;
+;    Sam Lantinga
+;    slouken@libsdl.org
+;
+; Assembler routines for RISC OS display
+;
+
+	AREA |C$$CODE|
+
+	EXPORT |RISCOS_Put32|
+
+; Display 32bpp to 32bpp, 1:1
+;
+; Code provided by Adrain Lees
+;
+; entry a1 -> destination
+;       a2 =  dest width in pixels
+;       a3 =  dest line length in bytes
+;       a4 =  dest height in scanlines
+;       arg5 -> source
+;       arg6 =  byte offset from end of source line to start of next
+
+Arg5    *       10*4
+Arg6    *       Arg5+4
+
+RISCOS_Put32    ROUT
+                STMFD   sp!,{a2,v1-v6,sl,fp,lr}
+                LDR     ip,[sp,#Arg5]
+                MOV     lr,a1
+                B       ucp64lp
+
+00              ;tail strip of 1-15 pixels
+
+                LDR     v1,[ip],#4
+01              SUBS    a2,a2,#1
+                STR     v1,[lr],#4
+                LDRHI   v1,[ip],#4
+                BHI     %01
+                B       %02
+
+ucp64end        ADDS    a2,a2,#16
+                BNE     %00
+
+02              SUBS    a4,a4,#1                ;height--
+                LDRHI   v1,[sp,#Arg6]
+                LDRHI   a2,[sp]                 ;reload width
+                BLS     %03
+
+                ;move to start of next scanline
+
+                ADD     lr,a1,a3
+                ADD     a1,a1,a3
+                ADD     ip,ip,v1
+
+ucp64lp         SUBS    a2,a2,#16
+                BLO     ucp64end
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                PLD     [ip,#64]
+
+                LDR     v1,[ip],#4
+                LDR     v2,[ip],#4
+                LDR     v3,[ip],#4
+                LDR     v4,[ip],#4
+                LDR     v5,[ip],#4
+                LDR     v6,[ip],#4
+                LDR     sl,[ip],#4
+                LDR     fp,[ip],#4
+                STR     v1,[lr],#4
+                STR     v2,[lr],#4
+                STR     v3,[lr],#4
+                STR     v4,[lr],#4
+                STR     v5,[lr],#4
+                STR     v6,[lr],#4
+                STR     sl,[lr],#4
+                STR     fp,[lr],#4
+
+                B       ucp64lp
+
+03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
+