MCR and MRC instruction usage

0

here i have written code to find number of cycles taken by a function but i am getting error at first MCR instruction can any one suggest me how to solve this problem.This code is written in XCODE and running on ios.

#include <stdio.h>

static inline unsigned int get_cyclecount (void)
{
    unsigned int value;
    // Read CCNT Register
    asm volatile ("MRC p15, 0, %0, c9, c13, 0\t\n": "=r"(value));
    return value;
}

 static inline  void init_perfcounters (int do_reset, int enable_divider)
{
    // in general enable all counters (including cycle counter)
    int value = 1;

    // perform reset:
    if (do_reset)
    {
        value |= 2;     // reset all counters to zero.
        value |= 4;     // reset cycle counter to zero.
    }

    if (enable_divider)
        value |= 8;     // enable "by 64" divider for CCNT.

    value |= 16;

    // program the performance-counter control-register:
    asm volatile ("MCR p15, 0, %0, c9, c12, 0\t\n" :: "r"(value));

    // enable all counters:
    asm volatile ("MCR p15, 0, %0, c9, c12, 1\t\n" :: "r"(0x8000000f));

    // clear overflows:
    asm volatile ("MCR p15, 0, %0, c9, c12, 3\t\n" :: "r"(0x8000000f));
}

int main () {
    float x = 100.0f;
    float y = 0.00000f;

    float inst,cycl,cycl_inst;

    int do_reset=0;
    int enable_divider=0;

    init_perfcounters (1, 0);

    // measure the counting overhead:
    unsigned int overhead = get_cyclecount();

    overhead = get_cyclecount() - overhead;

    unsigned int t = get_cyclecount();

    // do some stuff here..

   log_10_c_function(x);

    t = get_cyclecount() - t;

    printf ("Totaly %d cycles (including function call) ", t - overhead);

    return 0;

}
ios
arm
cpu-cycles
asked on Stack Overflow Jan 7, 2016 by ravi • edited Jan 7, 2016 by Rob

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0