[Scummvm-cvs-logs] SF.net SVN: scummvm: [30100] scummvm/branches/branch-0-11-0

vinterstum at users.sourceforge.net vinterstum at users.sourceforge.net
Mon Dec 31 12:53:20 CET 2007


Revision: 30100
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30100&view=rev
Author:   vinterstum
Date:     2007-12-31 03:53:19 -0800 (Mon, 31 Dec 2007)

Log Message:
-----------
(backport) Enabling the SMUSH/sound ARM optimizations for the iPhone. Converting any numerical expressions in the asm to absolute values (moving the expression to comments) since the iPhone assembler can't handle them, and prepending an underscore to the exported symbols (with some preprocessor magic similar to the hq3x asm for handle ports where it's not needed)

Modified Paths:
--------------
    scummvm/branches/branch-0-11-0/configure
    scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47.cpp
    scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47ARM.s
    scummvm/branches/branch-0-11-0/sound/rate_arm.cpp
    scummvm/branches/branch-0-11-0/sound/rate_arm_asm.s

Modified: scummvm/branches/branch-0-11-0/configure
===================================================================
--- scummvm/branches/branch-0-11-0/configure	2007-12-31 11:30:02 UTC (rev 30099)
+++ scummvm/branches/branch-0-11-0/configure	2007-12-31 11:53:19 UTC (rev 30100)
@@ -1077,12 +1077,14 @@
 			;;
 		iphone)
 			echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes"
-			DEFINES="$DEFINES -DIPHONE -DUNIX"
+			DEFINES="$DEFINES -DIPHONE -DUNIX -DUSE_ARM_SOUND_ASM -DUSE_ARM_SMUSH_ASM"
 			_endian=little
 			_need_memalign=yes
 			type_1_byte='char'
 			type_2_byte='short'
 			type_4_byte='int'
+			add_line_to_config_mk 'USE_ARM_SOUND_ASM = 1'
+			add_line_to_config_mk 'USE_ARM_SMUSH_ASM = 1'
 			_backend="iphone"
 			_mak_hq_scalers='DISABLE_HQ_SCALERS = 1'
 			_build_hq_scalers="no"

Modified: scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47.cpp
===================================================================
--- scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47.cpp	2007-12-31 11:30:02 UTC (rev 30099)
+++ scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47.cpp	2007-12-31 11:53:19 UTC (rev 30100)
@@ -340,6 +340,12 @@
 
 #ifdef USE_ARM_SMUSH_ASM
 
+extern "C" {
+#ifndef IPHONE
+#define ARM_Smush_decode2 _ARM_Smush_decode2
+#endif
+}
+
 extern "C" void ARM_Smush_decode2(      byte  *dst,
                                   const byte  *src,
                                         int    width,

Modified: scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47ARM.s
===================================================================
--- scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47ARM.s	2007-12-31 11:30:02 UTC (rev 30099)
+++ scummvm/branches/branch-0-11-0/engines/scumm/smush/codec47ARM.s	2007-12-31 11:53:19 UTC (rev 30100)
@@ -18,8 +18,8 @@
 @ along with this program@ if not, write to the Free Software
 @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 @
-@ $URL:$
-@ $Id:$
+@ $URL$
+@ $Id$
 @
 @ @author Robin Watts (robin at wss.co.uk)
 @
@@ -29,9 +29,9 @@
 
 	.text
 
-	.global	ARM_Smush_decode2
+	.global	_ARM_Smush_decode2
 
-ARM_Smush_decode2:
+_ARM_Smush_decode2:
 	@ r0 = dst
 	@ r1 = src
 	@ r2 = width
@@ -44,7 +44,7 @@
 	@ <> = _tableSmall
 	STMFD	r13!,{r2,r4-r11,R14}
 
-        LDR	r4,[r13,#(9+1)*4]	@ r4 = param
+        LDR	r4,[r13,#40]	@ r4 = param (40 = (9+1)*4)
 	@ stall
 	@ stall
 	SUB	r4,r4,#0xF8
@@ -72,7 +72,7 @@
 	BEQ	level1codeFE
 level1codeFD:
 	LDRB	r6,[r1],#1		@ r6 = tmp = *_d_src++
-	LDR	r8,[r13,#(9+1+2)*4]	@ r8 = _tableBig
+	LDR	r8,[r13,#48]		@ r8 = _tableBig (48 = (9+1+2)*4)
 	@ stall
 	ADD	r12,r6,r6,LSL #1	@ r12= tmp*3
 	ADD	r6,r6,r12,LSL #5 	@ r6 = tmp*97
@@ -93,7 +93,7 @@
 level1codeFD_over1:
 	LDRB	r9,[r12,#1]		@ r9 = l = tmp_ptr[385]
 	LDRB	r6,[r1],#1		@ r6 = val = *_d_src++
-	SUB	r12,r12,#384-128	@ r12= &tmp_ptr[128]
+	SUB	r12,r12,#256		@ r12= &tmp_ptr[128] (256 = 384-128)
 	@ I don't really believe the next 2 lines are necessary, but...
 	CMP	r9,#0
 	BEQ	level1codeFD_over2
@@ -121,13 +121,13 @@
 	LDMFD	r13!,{r2,r4-r11,PC}
 
 level1codeSMALL:
-	LDR	r8,[r13,#(9+1+1)*4]	@ r8 = _table
-	LDR	r9,[r13,#(9+1+3)*4]	@ r9 = _offset1
+	LDR	r8,[r13,#44]		@ r8 = _table (44 = (9+1+1)*4)
+	LDR	r9,[r13,#52]		@ r9 = _offset1 (52 = (9+1+3)*4)
 	MOV	r6,r6,LSL #1		@ r6 = code<<1
 	LDRSH	r8,[r8,r6]		@ tmp2 = _table[code]
 level1codeFC:
 	@ EQ => FC
-	LDREQ	r9,[r13,#(9+1+4)*4]	@ r9 = _offset2
+	LDREQ	r9,[r13,#56]		@ r9 = _offset2 (56 = (9+1+4)*4)
 	MOVEQ	r8,#0
 	SUB	r11,r2,#7		@ r11 = _d_pitch-7
 	ADD	r9,r9,r0		@ tmp2 = _d_dst+_offset
@@ -212,7 +212,7 @@
 	BEQ	level2codeFE
 level2codeFD:
 	LDRB	r6,[r1],#1		@ r6 = tmp = *_d_src++
-	LDR	r8,[r13,#(9+1+5)*4]	@ r8 = _tableSmall
+	LDR	r8,[r13,#60]		@ r8 = _tableSmall (60 = (9+1+5)*4)
 	@ stall
 	@ stall
 	ADD	r8,r8,r6,LSL #7		@ r8 = _tableSmall + tmp*128
@@ -230,7 +230,7 @@
 	STRB	r6,[r10,r11,LSL #8]	@ *(_d_dst + (*tmp_ptr2++)) = val
 	BGT	level2codeFD_loop1
 level2codeFD_over1:
-	LDRB	r9,[r12,#97-32]		@ r9 = l = tmp_ptr[97]
+	LDRB	r9,[r12,#65]		@ r9 = l = tmp_ptr[97] (65 = 97-32)
 	LDRB	r6,[r1],#1		@ r6 = val = *_d_src++
 	@ I don't really believe the next 2 lines are necessary, but...
 	CMP	r9,#0
@@ -246,13 +246,13 @@
 	MOV	PC,R14
 
 level2codeSMALL:
-	LDR	r8,[r13,#(9+1+1)*4]	@ r8 = _table
-	LDR	r9,[r13,#(9+1+3)*4]	@ r9 = _offset1
+	LDR	r8,[r13,#44]		@ r8 = _table (44 = (9+1+1)*4)
+	LDR	r9,[r13,#52]		@ r9 = _offset1 (52 = (9+1+3)*4)
 	MOV	r6,r6,LSL #1		@ r6 = code<<1
 	LDRSH	r8,[r8,r6]		@ tmp2 = _table[code]
 level2codeFC:
 	@ EQ => FC
-	LDREQ	r9,[r13,#(9+1+4)*4]	@ r9 = _offset2
+	LDREQ	r9,[r13,#56]		@ r9 = _offset2 (56 = (9+1+4)*4)
 	MOVEQ	r8,#0
 	SUB	r11,r2,#3		@ r11 = _d_pitch-3
 	ADD	r9,r9,r0		@ tmp2 = _d_dst + _table[code]
@@ -350,13 +350,13 @@
 	MOV	PC,R14
 
 level3codeSMALL:
-	LDR	r8,[r13,#(9+1+1)*4]	@ r8 = _table
-	LDR	r9,[r13,#(9+1+3)*4]	@ r9 = _offset1
+	LDR	r8,[r13,#44]		@ r8 = _table (44 = (9+1+1)*4)
+	LDR	r9,[r13,#52]		@ r9 = _offset1 (52 = (9+1+3)*4)
 	MOV	r6,r6,LSL #1		@ r6 = code<<1
 	LDRSH	r8,[r8,r6]		@ tmp2 = _table[code]
 level3codeFC:
 	@ EQ => FC
-	LDREQ	r9,[r13,#(9+1+4)*4]	@ r9 = _offset2
+	LDREQ	r9,[r13,#56]		@ r9 = _offset2 (56 = (9+1+4)*4)
 	MOVEQ	r8,#0
 	ADD	r9,r9,r0		@ tmp2 = _d_dst+offset
 	ADD	r8,r8,r9		@ tmp2 = _d_dst+_table[code]+_offset

Modified: scummvm/branches/branch-0-11-0/sound/rate_arm.cpp
===================================================================
--- scummvm/branches/branch-0-11-0/sound/rate_arm.cpp	2007-12-31 11:30:02 UTC (rev 30099)
+++ scummvm/branches/branch-0-11-0/sound/rate_arm.cpp	2007-12-31 11:53:19 UTC (rev 30100)
@@ -129,6 +129,14 @@
 	sr.inLen = 0;
 }
 
+extern "C" {
+#ifndef IPHONE
+#define ARM_SimpleRate_M _ARM_SimpleRate_M
+#define ARM_SimpleRate_S _ARM_SimpleRate_S
+#define ARM_SimpleRate_R _ARM_SimpleRate_R
+#endif
+}
+
 extern "C" void ARM_SimpleRate_M(AudioStream       &input,
                                  int (*fn)(Audio::AudioStream&,int16*,int),
                                  SimpleRateDetails *sr,
@@ -220,6 +228,14 @@
 	st_sample_t inBuf[INTERMEDIATE_BUFFER_SIZE];
 } LinearRateDetails;
 
+extern "C" {
+#ifndef IPHONE
+#define ARM_LinearRate_M _ARM_LinearRate_M
+#define ARM_LinearRate_S _ARM_LinearRate_S
+#define ARM_LinearRate_R _ARM_LinearRate_R
+#endif
+}
+
 extern "C" void ARM_LinearRate_M(AudioStream       &input,
                                  int (*fn)(Audio::AudioStream&,int16*,int),
                                  LinearRateDetails *lr,
@@ -323,6 +339,14 @@
 /**
  * Simple audio rate converter for the case that the inrate equals the outrate.
  */
+extern "C" {
+#ifndef IPHONE
+#define ARM_CopyRate_M _ARM_CopyRate_M
+#define ARM_CopyRate_S _ARM_CopyRate_S
+#define ARM_CopyRate_R _ARM_CopyRate_R
+#endif
+}
+
 extern "C" void ARM_CopyRate_M(st_size_t    len,
                                st_sample_t *obuf,
                                st_volume_t  vol_l,
@@ -359,7 +383,6 @@
 fprintf(stderr, "Copy st=%d rev=%d\n", stereo, reverseStereo);
 fflush(stderr);
 #endif
-		st_sample_t *ptr;
 		st_size_t len;
 
 		if (stereo)

Modified: scummvm/branches/branch-0-11-0/sound/rate_arm_asm.s
===================================================================
--- scummvm/branches/branch-0-11-0/sound/rate_arm_asm.s	2007-12-31 11:30:02 UTC (rev 30099)
+++ scummvm/branches/branch-0-11-0/sound/rate_arm_asm.s	2007-12-31 11:53:19 UTC (rev 30100)
@@ -29,17 +29,17 @@
 
         .text
 
-        .global ARM_CopyRate_M
-        .global ARM_CopyRate_S
-        .global ARM_CopyRate_R
-        .global ARM_SimpleRate_M
-        .global ARM_SimpleRate_S
-        .global ARM_SimpleRate_R
-        .global ARM_LinearRate_M
-        .global ARM_LinearRate_S
-        .global ARM_LinearRate_R
+        .global _ARM_CopyRate_M
+        .global _ARM_CopyRate_S
+        .global _ARM_CopyRate_R
+        .global _ARM_SimpleRate_M
+        .global _ARM_SimpleRate_S
+        .global _ARM_SimpleRate_R
+        .global _ARM_LinearRate_M
+        .global _ARM_LinearRate_S
+        .global _ARM_LinearRate_R
 
-ARM_CopyRate_M:
+_ARM_CopyRate_M:
         @ r0 = len
         @ r1 = obuf
         @ r2 = vol_l
@@ -59,9 +59,9 @@
         MUL     r5, r3, r5              @ r5 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r14,#1<<31          @ Clamp r6
+        RSCVS   r6, r14,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r14,#1<<31          @ Clamp r7
+        RSCVS   r7, r14,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -74,7 +74,7 @@
 
         LDMFD   r13!,{r4-r7,PC}
 
-ARM_CopyRate_S:
+_ARM_CopyRate_S:
         @ r0 = len
         @ r1 = obuf
         @ r2 = vol_l
@@ -95,9 +95,9 @@
         MUL     r5, r3, r5              @ r6 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r14,#1<<31          @ Clamp r6
+        RSCVS   r6, r14,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r14,#1<<31          @ Clamp r7
+        RSCVS   r7, r14,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -110,7 +110,7 @@
 
         LDMFD   r13!,{r4-r7,PC}
 
-ARM_CopyRate_R:
+_ARM_CopyRate_R:
         @ r0 = len
         @ r1 = obuf
         @ r2 = vol_l
@@ -131,9 +131,9 @@
         MUL     r5, r3, r5              @ r5 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r14,#1<<31          @ Clamp r6
+        RSCVS   r6, r14,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r14,#1<<31          @ Clamp r7
+        RSCVS   r7, r14,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -146,7 +146,7 @@
 
         LDMFD   r13!,{r4-r7,PC}
 
-ARM_SimpleRate_M:
+_ARM_SimpleRate_M:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -183,9 +183,9 @@
         MUL     r5, r14,r5              @ r5 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r10,#1<<31          @ Clamp r6
+        RSCVS   r6, r10,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r10,#1<<31          @ Clamp r7
+        RSCVS   r7, r10,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -201,7 +201,7 @@
         STMIA   r14,{r0,r1,r2}          @ Store back updated values
         LDMFD   r13!,{r4-r8,r10-r11,PC}
 SimpleRate_M_read:
-        LDR     r0, [r13,#4*2]          @ r0 = sr
+        LDR     r0, [r13,#8]            @ r0 = sr (8 = 4*2)
         ADD     r0, r0, #16             @ r0 = inPtr = inBuf
  .ifdef PALMOS_MODE
 	LDR	r10,[r13,#4*8]		@ restore r10
@@ -209,14 +209,14 @@
         STMFD   r13!,{r0,r2-r3,r12,r14}
 
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]          @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 3+8+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]           @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #1              @ r1 = inLen-1
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     SimpleRate_M_end
@@ -229,7 +229,7 @@
         B       SimpleRate_M_read_return
 
 
-ARM_SimpleRate_S:
+_ARM_SimpleRate_S:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -267,9 +267,9 @@
         MUL     r5, r14,r5              @ r6 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r10,#1<<31          @ Clamp r6
+        RSCVS   r6, r10,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r10,#1<<31          @ Clamp r7
+        RSCVS   r7, r10,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -285,21 +285,21 @@
         STMIA   r14,{r0,r1,r2}          @ store back updated values
         LDMFD   r13!,{r4-r8,r10-r11,PC}
 SimpleRate_S_read:
-        LDR     r0, [r13,#4*2]          @ r0 = sr
+        LDR     r0, [r13,#8]            @ r0 = sr (8 = 4*2)
         ADD     r0, r0, #16             @ r0 = inPtr = inBuf
  .ifdef PALMOS_MODE
 	LDR	r10,[r13,#4*8]		@ restore r10
  .endif
         STMFD   r13!,{r0,r2-r3,r12,r14}
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]           @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 3+8+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]            @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #2              @ r1 = inLen-2
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     SimpleRate_S_end
@@ -313,7 +313,7 @@
 
 
 
-ARM_SimpleRate_R:
+_ARM_SimpleRate_R:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -351,9 +351,9 @@
         MUL     r5, r14,r5              @ r6 = tmp1*vol_r
 
         ADDS    r6, r4, r6, LSL #16     @ r6 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r6, r10,#1<<31          @ Clamp r6
+        RSCVS   r6, r10,#0x80000000     @ Clamp r6
         ADDS    r7, r5, r7, LSL #16     @ r7 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r7, r10,#1<<31          @ Clamp r7
+        RSCVS   r7, r10,#0x80000000     @ Clamp r7
 
         MOV     r6, r6, LSR #16         @ Shift back to halfword
         MOV     r7, r7, LSR #16         @ Shift back to halfword
@@ -369,7 +369,7 @@
         STMIA   r14,{r0,r1,r2}          @ Store back updated values
         LDMFD   r13!,{r4-r8,r10-r11,PC}
 SimpleRate_R_read:
-        LDR     r0, [r13,#4*2]          @ r0 = sr
+        LDR     r0, [r13,#8]            @ r0 = sr (8 = 4*2)
         ADD     r0, r0, #16             @ r0 = inPtr = inBuf
  .ifdef PALMOS_MODE
 	LDR	r10,[r13,#4*8]		@ restore r10
@@ -377,14 +377,14 @@
         STMFD   r13!,{r0,r2-r3,r12,r14}
 
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]           @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 3+8+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]            @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #2              @ r1 = inLen-2
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     SimpleRate_R_end
@@ -397,7 +397,7 @@
         B       SimpleRate_R_read_return
 
 
-ARM_LinearRate_M:
+_ARM_LinearRate_M:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -450,9 +450,9 @@
         MUL     r6, r14,r6              @ r6 = tmp1*vol_r
 
         ADDS    r7, r7, r4, LSL #16     @ r7 = obuf[0]<<16 + tmp0*vol_l
-        RSCVS   r7, r10, #1<<31         @ Clamp r7
+        RSCVS   r7, r10, #0x80000000    @ Clamp r7
         ADDS    r6, r6, r5, LSL #16     @ r6 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r6, r10, #1<<31         @ Clamp r6
+        RSCVS   r6, r10, #0x80000000    @ Clamp r6
 
         MOV     r7, r7, LSR #16         @ Shift back to halfword
         MOV     r6, r6, LSR #16         @ Shift back to halfword
@@ -478,14 +478,14 @@
         STMFD   r13!,{r0,r2-r3,r12,r14}
 
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]           @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 2+9+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]           @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #1              @ r1 = inLen-1
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     LinearRate_M_end
@@ -494,7 +494,7 @@
  .endif
         B       LinearRate_M_read_return
 
-ARM_LinearRate_S:
+_ARM_LinearRate_S:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -557,9 +557,9 @@
 
         ADDS    r7, r7, r10, LSL #16    @ r7 = obuf[0]<<16 + tmp0*vol_l
         MOV     r4, #0
-        RSCVS   r7, r4, #1<<31          @ Clamp r7
+        RSCVS   r7, r4, #0x80000000     @ Clamp r7
         ADDS    r6, r6, r5, LSL #16     @ r6 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r6, r4, #1<<31          @ Clamp r6
+        RSCVS   r6, r4, #0x80000000     @ Clamp r6
 
         MOV     r7, r7, LSR #16         @ Shift back to halfword
         MOV     r6, r6, LSR #16         @ Shift back to halfword
@@ -585,20 +585,20 @@
         STMFD   r13!,{r0,r2-r3,r12,r14}
 
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]          @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 2+9+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]           @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #2              @ r1 = inLen-2
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     LinearRate_S_end
         B       LinearRate_S_read_return
 
-ARM_LinearRate_R:
+_ARM_LinearRate_R:
         @ r0 = AudioStream &input
         @ r1 = input.readBuffer
         @ r2 = input->sr
@@ -661,9 +661,9 @@
 
         ADDS    r7, r7, r10, LSL #16    @ r7 = obuf[0]<<16 + tmp0*vol_l
         MOV     r4, #0
-        RSCVS   r7, r4, #1<<31          @ Clamp r7
+        RSCVS   r7, r4, #0x80000000     @ Clamp r7
         ADDS    r6, r6, r5, LSL #16     @ r6 = obuf[1]<<16 + tmp1*vol_r
-        RSCVS   r6, r4, #1<<31          @ Clamp r6
+        RSCVS   r6, r4, #0x80000000     @ Clamp r6
 
         MOV     r7, r7, LSR #16         @ Shift back to halfword
         MOV     r6, r6, LSR #16         @ Shift back to halfword
@@ -689,14 +689,14 @@
         STMFD   r13!,{r0,r2-r3,r12,r14}
 
         MOV     r1, r0                  @ r1 = inBuf
-        LDR     r0, [r13,#4*5]          @ r0 = AudioStream & input
+        LDR     r0, [r13,#20]          @ r0 = AudioStream & input (20 = 4*5)
         MOV     r2, #512                @ r2 = ARRAYSIZE(inBuf)
 
         @ Calling back into C++ here. WinCE is fairly easy about such things
         @ but other OS are more awkward. r9 is preserved for Symbian, and
         @ we have 2+9+5 = 16 things on the stack (an even number).
         MOV     r14,PC
-        LDR     PC,[r13,#4*6]           @ inLen = input.readBuffer(inBuf,512)
+        LDR     PC,[r13,#24]           @ inLen = input.readBuffer(inBuf,512) (24 = 4*6)
         SUBS    r1, r0, #2              @ r1 = inLen-2
         LDMFD   r13!,{r0,r2-r3,r12,r14}
         BLT     LinearRate_R_end


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list