> On Friday, November 9, 2012 12:37:47 PM UTC-8, lang...@fonz.dk wrote:
>> On 9 Nov., 02:36, GoodMan <o...@compandent.com> wrote:
>>
>>> I am looking for ETSI intrinsic for Android NDK (basic operations).
>>
>>>
>>
>>> ARM has such in the form of dspfns.h file, but its code is not suitable for NDK (uses __asm{} rather than asm() etc.). The ARM __asm{} can specify a variable name, while the asm() can specify a register. How can I specify C variable into asm() ?
>>
>>>
>>
>>> Is there anything like _NASSERT for NDK?
>>
>>>
>>
>>> Thanks,
>>
>>> AM
>>
>>
>>
>> NDK is basically arm-eabi-gcc so you should probably look at the gcc
>>
>> documentation
>>
>>
>>
>> -Lasse
>
>
> I never found a way to put C variables inside inline assembler (in C files) for Android NDK which is basically arm-eabi-gcc. I would greatly appreciate if someone could help on that!
>
> Thanks,
> AM
There is a method in GCC to access C variables from __asm__() code.
Get the GCC manual from <http://gcc.gnu.org/onlinedocs/>.
In my copy (version 4.7.1) it is in:
6.41 Assembler Instructions with C Expression Operands
An example for arm-eabi-gcc in Cortex-M3 mode:
Source:
#include <inttypes.h>
/* Change processing priority, return old priority */
uint32_t change_pri(uint32_t newpri)
{
uint32_t oldpri;
__asm__ (
"mrs %[r], basepri\n\t" /* get old priority */
"msr basepri, %[n]" /* update priority */
: [r] "=&r" (oldpri)
: [n] "r" (newpri)
);
return oldpri;
}
Compiler listing (part of larger module):
410 change_pri:
411 @ args = 0, pretend = 0, frame = 0
412 @ frame_needed = 0, uses_anonymous_args = 0
413 @ link register save eliminated.
414 @ 55 "kernel.c" 1
415 0000 EFF31183 mrs r3, basepri
416 0004 80F31188 msr basepri, r0
417 @ 0 "" 2
418 .thumb
419 0008 1846 mov r0, r3
420 000a 7047 bx lr
--
Tauno Voipio
Reply by GoodMan●November 12, 20122012-11-12
On Thursday, November 8, 2012 5:36:23 PM UTC-8, GoodMan wrote:
> I am looking for ETSI intrinsic for Android NDK (basic operations).
>
>
>
> ARM has such in the form of dspfns.h file, but its code is not suitable for NDK (uses __asm{} rather than asm() etc.). The ARM __asm{} can specify a variable name, while the asm() can specify a register. How can I specify C variable into asm() ?
>
>
>
> Is there anything like _NASSERT for NDK?
>
>
>
> Thanks,
>
> AM
I never found a way to put C variables inside inline assembler (in C files) for Android NDK which is basically arm-eabi-gcc. I would greatly appreciate if someone could help on that!
Thanks,
AM
Reply by GoodMan●November 12, 20122012-11-12
On Friday, November 9, 2012 12:37:47 PM UTC-8, lang...@fonz.dk wrote:
> On 9 Nov., 02:36, GoodMan <o...@compandent.com> wrote:
>
> > I am looking for ETSI intrinsic for Android NDK (basic operations).
>
> >
>
> > ARM has such in the form of dspfns.h file, but its code is not suitable for NDK (uses __asm{} rather than asm() etc.). �The ARM __asm{} can specify a variable name, while the asm() can specify a register. �How can I specify C variable into asm() ?
>
> >
>
> > Is there anything like _NASSERT �for NDK?
>
> >
>
> > Thanks,
>
> > AM
>
>
>
> NDK is basically arm-eabi-gcc so you should probably look at the gcc
>
> documentation
>
>
>
> -Lasse
I never found a way to put C variables inside inline assembler (in C files) for Android NDK which is basically arm-eabi-gcc. I would greatly appreciate if someone could help on that!
Thanks,
AM
Reply by lang...@fonz.dk●November 9, 20122012-11-09
On 9 Nov., 02:36, GoodMan <o...@compandent.com> wrote:
> I am looking for ETSI intrinsic for Android NDK (basic operations).
>
> ARM has such in the form of dspfns.h file, but its code is not suitable for NDK (uses __asm{} rather than asm() etc.). �The ARM __asm{} can specify a variable name, while the asm() can specify a register. �How can I specify C variable into asm() ?
>
> Is there anything like _NASSERT �for NDK?
>
> Thanks,
> AM
NDK is basically arm-eabi-gcc so you should probably look at the gcc
documentation
-Lasse
Reply by GoodMan●November 8, 20122012-11-08
I am looking for ETSI intrinsic for Android NDK (basic operations).
ARM has such in the form of dspfns.h file, but its code is not suitable for NDK (uses __asm{} rather than asm() etc.). The ARM __asm{} can specify a variable name, while the asm() can specify a register. How can I specify C variable into asm() ?
Is there anything like _NASSERT for NDK?
Thanks,
AM