symbian-qemu-0.9.1-12/libsdl-trunk/src/video/riscos/SDL_riscosASM.S
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 ;
       
     2 ;    SDL - Simple DirectMedia Layer
       
     3 ;    Copyright (C) 1997-2004 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 
       
    40 Arg5    *       10*4
       
    41 Arg6    *       Arg5+4
       
    42 
       
    43 RISCOS_Put32    ROUT
       
    44                 STMFD   sp!,{a2,v1-v6,sl,fp,lr}
       
    45                 LDR     ip,[sp,#Arg5]
       
    46                 MOV     lr,a1
       
    47                 B       ucp64lp
       
    48 
       
    49 00              ;tail strip of 1-15 pixels
       
    50 
       
    51                 LDR     v1,[ip],#4
       
    52 01              SUBS    a2,a2,#1
       
    53                 STR     v1,[lr],#4
       
    54                 LDRHI   v1,[ip],#4
       
    55                 BHI     %01
       
    56                 B       %02
       
    57 
       
    58 ucp64end        ADDS    a2,a2,#16
       
    59                 BNE     %00
       
    60 
       
    61 02              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 
       
    72 ucp64lp         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 
       
   115 03              LDMFD   sp!,{a2,v1-v6,sl,fp,pc}
       
   116