[Scummvm-cvs-logs] SF.net SVN: scummvm: [30093] scummvm/trunk
vinterstum at users.sourceforge.net
vinterstum at users.sourceforge.net
Mon Dec 31 02:50:19 CET 2007
Revision: 30093
http://scummvm.svn.sourceforge.net/scummvm/?rev=30093&view=rev
Author: vinterstum
Date: 2007-12-30 17:50:18 -0800 (Sun, 30 Dec 2007)
Log Message:
-----------
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/trunk/configure
scummvm/trunk/engines/scumm/smush/codec47.cpp
scummvm/trunk/engines/scumm/smush/codec47ARM.s
scummvm/trunk/sound/rate_arm.cpp
scummvm/trunk/sound/rate_arm_asm.s
Modified: scummvm/trunk/configure
===================================================================
--- scummvm/trunk/configure 2007-12-31 01:21:34 UTC (rev 30092)
+++ scummvm/trunk/configure 2007-12-31 01:50:18 UTC (rev 30093)
@@ -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/trunk/engines/scumm/smush/codec47.cpp
===================================================================
--- scummvm/trunk/engines/scumm/smush/codec47.cpp 2007-12-31 01:21:34 UTC (rev 30092)
+++ scummvm/trunk/engines/scumm/smush/codec47.cpp 2007-12-31 01:50:18 UTC (rev 30093)
@@ -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/trunk/engines/scumm/smush/codec47ARM.s
===================================================================
--- scummvm/trunk/engines/scumm/smush/codec47ARM.s 2007-12-31 01:21:34 UTC (rev 30092)
+++ scummvm/trunk/engines/scumm/smush/codec47ARM.s 2007-12-31 01:50:18 UTC (rev 30093)
@@ -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/trunk/sound/rate_arm.cpp
===================================================================
--- scummvm/trunk/sound/rate_arm.cpp 2007-12-31 01:21:34 UTC (rev 30092)
+++ scummvm/trunk/sound/rate_arm.cpp 2007-12-31 01:50:18 UTC (rev 30093)
@@ -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/trunk/sound/rate_arm_asm.s
===================================================================
--- scummvm/trunk/sound/rate_arm_asm.s 2007-12-31 01:21:34 UTC (rev 30092)
+++ scummvm/trunk/sound/rate_arm_asm.s 2007-12-31 01:50:18 UTC (rev 30093)
@@ -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