From: Dan White Date: Fri, 10 May 2013 23:31:36 +0000 (-0500) Subject: msp4th: speedup stack manipulation to *11* X-Git-Tag: cheetah~92 X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=79aec6a0bb20c3cbc3336a6d184f304aeffdf298;p=430.git msp4th: speedup stack manipulation to *11* --- diff --git a/msp4th/msp4th.c b/msp4th/msp4th.c index 6d05889..f82f0f6 100644 --- a/msp4th/msp4th.c +++ b/msp4th/msp4th.c @@ -531,8 +531,17 @@ int16_t popMathStack(void) void pushMathStack(int16_t n) { +#if defined(MSP430) + asm("decd %[ms]\n" + "mov %[n], @%[ms]\n" + : /* outputs */ + : /* inputs */ [n] "r" (n), [ms] "r" (mathStackPtr) + : /* clobbers */ + ); +#else mathStackPtr--; *mathStackPtr = n; +#endif } @@ -544,8 +553,17 @@ int16_t popAddrStack(void) { int16_t i; +#if defined(MSP430) + asm("mov @%[as], %[out]\n" + "incd %[as]\n" + : /* outputs */ [out] "=r" (i) + : /* inputs */ [as] "r" (addrStackPtr) + : /* clobbers */ + ); +#else i = *addrStackPtr; addrStackPtr++; +#endif return(i); } @@ -553,8 +571,17 @@ int16_t popAddrStack(void) void pushAddrStack(int16_t n) { +#if defined(MSP430) + asm("decd %[as]\n" + "mov %[n], @%[as]\n" + : /* outputs */ + : /* inputs */ [n] "r" (n), [as] "r" (addrStackPtr) + : /* clobbers */ + ); +#else addrStackPtr--; *addrStackPtr = n; +#endif }