Later patches will use these functions for gic(ipi/lpi/timer) tests. Signed-off-by: Jingyi Wang <wangjingyi11@xxxxxxxxxx> Reviewed-by: Eric Auger <eric.auger@xxxxxxxxxx> --- arm/micro-bench.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/arm/micro-bench.c b/arm/micro-bench.c index 794dfac..fc4d356 100644 --- a/arm/micro-bench.c +++ b/arm/micro-bench.c @@ -25,24 +25,24 @@ static u32 cntfrq; -static volatile bool ipi_ready, ipi_received; +static volatile bool irq_ready, irq_received; static void *vgic_dist_base; static void (*write_eoir)(u32 irqstat); -static void ipi_irq_handler(struct pt_regs *regs) +static void gic_irq_handler(struct pt_regs *regs) { - ipi_ready = false; - ipi_received = true; + irq_ready = false; + irq_received = true; gic_write_eoir(gic_read_iar()); - ipi_ready = true; + irq_ready = true; } -static void ipi_secondary_entry(void *data) +static void gic_secondary_entry(void *data) { - install_irq_handler(EL1H_IRQ, ipi_irq_handler); + install_irq_handler(EL1H_IRQ, gic_irq_handler); gic_enable_defaults(); local_irq_enable(); - ipi_ready = true; + irq_ready = true; while (true) cpu_relax(); } @@ -72,9 +72,9 @@ static bool test_init(void) break; } - ipi_ready = false; + irq_ready = false; gic_enable_defaults(); - on_cpu_async(1, ipi_secondary_entry, NULL); + on_cpu_async(1, gic_secondary_entry, NULL); cntfrq = get_cntfrq(); printf("Timer Frequency %d Hz (Output in microseconds)\n", cntfrq); @@ -82,13 +82,18 @@ static bool test_init(void) return true; } -static void ipi_prep(void) +static void gic_prep_common(void) { unsigned tries = 1 << 28; - while (!ipi_ready && tries--) + while (!irq_ready && tries--) cpu_relax(); - assert(ipi_ready); + assert(irq_ready); +} + +static void ipi_prep(void) +{ + gic_prep_common(); } static void ipi_exec(void) @@ -96,17 +101,17 @@ static void ipi_exec(void) unsigned tries = 1 << 28; static int received = 0; - ipi_received = false; + irq_received = false; gic_ipi_send_single(1, 1); - while (!ipi_received && tries--) + while (!irq_received && tries--) cpu_relax(); - if (ipi_received) + if (irq_received) ++received; - assert_msg(ipi_received, "failed to receive IPI in time, but received %d successfully\n", received); + assert_msg(irq_received, "failed to receive IPI in time, but received %d successfully\n", received); } static void hvc_exec(void) -- 2.19.1