59 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright 2014, Michael Ellerman, IBM Corp.4 */5 6#include <stdio.h>7#include <stdlib.h>8 9#include "ebb.h"10 11 12/*13 * Basic test that counts user cycles and takes EBBs.14 */15int cycles(void)16{17 struct event event;18 19 SKIP_IF(!ebb_is_supported());20 21 event_init_named(&event, 0x1001e, "cycles");22 event_leader_ebb_init(&event);23 24 event.attr.exclude_kernel = 1;25 event.attr.exclude_hv = 1;26 event.attr.exclude_idle = 1;27 28 FAIL_IF(event_open(&event));29 30 ebb_enable_pmc_counting(1);31 setup_ebb_handler(standard_ebb_callee);32 ebb_global_enable();33 FAIL_IF(ebb_event_enable(&event));34 35 mtspr(SPRN_PMC1, pmc_sample_period(sample_period));36 37 while (ebb_state.stats.ebb_count < 10) {38 FAIL_IF(core_busy_loop());39 FAIL_IF(ebb_check_mmcr0());40 }41 42 ebb_global_disable();43 ebb_freeze_pmcs();44 45 dump_ebb_state();46 47 event_close(&event);48 49 FAIL_IF(ebb_state.stats.ebb_count == 0);50 FAIL_IF(!ebb_check_count(1, sample_period, 100));51 52 return 0;53}54 55int main(void)56{57 return test_harness(cycles, "cycles");58}59