From f976a03ca10e7d322be6ea68c04913a2da18e00e Mon Sep 17 00:00:00 2001 From: cnlohr <lohr85@gmail.com> Date: Mon, 13 Mar 2023 04:00:53 -0400 Subject: [PATCH] Show actual instruction timings when running from RAM using inline assembly. --- examples/run_from_ram/run_from_ram.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/examples/run_from_ram/run_from_ram.c b/examples/run_from_ram/run_from_ram.c index f7a8d4f..07ecee1 100644 --- a/examples/run_from_ram/run_from_ram.c +++ b/examples/run_from_ram/run_from_ram.c @@ -36,6 +36,24 @@ void RamFunction() GPIOC->BSHR = (1<<16); Delay_Ms( 250 ); count++; + + // But we turbo through twiddling a pin. + + asm volatile("\n\ + li a0, 1 | (1<<4)\n\ + li a1, (1<<16) | (1<<(16+4))\n\ + la a2, 0x40011410 /* GPIO D*/ \n\ + c.nop\n\ + c.sw a0, 0(a2)\n\ + c.sw a1, 0(a2)\n\ + c.sw a0, 0(a2) /* Writing out takes 2 cycles from what I can tell*/ \n\ + c.addi a3, 1 /* Insert this for comparative timing, it's 1 cycle */ \n\ + c.sw a1, 0(a2)\n\ + c.sw a0, 0(a2)\n\ + c.sw a1, 0(a2)\n\ + c.sw a0, 0(a2)\n\ + c.sw a1, 0(a2)\n\ + " : : : "a0", "a1", "a2", "a3" ); } } -- GitLab