diff --git a/module_usb_audio/mixer/fastmix.S b/module_usb_audio/mixer/fastmix.S index 0047a1d3..802c373c 100644 --- a/module_usb_audio/mixer/fastmix.S +++ b/module_usb_audio/mixer/fastmix.S @@ -4,6 +4,52 @@ #define MIX_INPUTS 18 +#if defined(__XS2A__) + +#define DOMIX_TOP(i) \ +.cc_top doMix##i.function,doMix##i; \ + .align 4 ;\ +.globl doMix##i ;\ +.type doMix##i, @function ;\ +.globl doMix##i##.nstackwords ;\ +.globl doMix##i##.maxthreads ; \ +.globl doMix##i##.maxtimers ; \ +.globl doMix##i##.maxchanends ; \ +.globl doMix##i##.maxsync ;\ +.linkset doMix##i##.locnoside, 1; \ +.linkset doMix##i##.locnochandec, 1;\ +.linkset doMix##i##.nstackwords, 0 ;\ +.linkset doMix##i##.maxchanends, 0 ;\ +.linkset doMix##i##.maxtimers, 0 ;\ +.linkset doMix##i##.maxthreads, 1; \ +doMix##i##: ;\ + ENTSP_lu6 0; \ + set cp, r0; \ + set dp, r1; \ + lsub r0, r1, r0, r0, r0;\ + .label_##i##: + +#define DOMIX_BOT(i) \ + ldap r11, _dp; \ + set dp, r11;\ + ldap r11, _cp;\ + set cp, r11;\ +\ + mov r0, r1;\ + ldc r2, 0x19;\ + sext r0, r2;\ + eq r0, r0, r1;\ + bf r0, .L20; \ +\ + shl r0, r1, 0x7;\ + retsp 0x0;\ +\ +\ +.size doMix##i, .-doMix##i; \ +.cc_bottom doMix##i##.function; + +#else + #define DOMIX_TOP(i) \ .cc_top doMix##i.function,doMix##i; \ @@ -46,6 +92,8 @@ doMix##i##: ;\ .size doMix##i, .-doMix##i; \ .cc_bottom doMix##i##.function; +#endif + #define N MIX_INPUTS #define BODY(i) \ ldw r2,cp[i]; \