1bc88bb2bSRuslan Bukin /*- 2bc88bb2bSRuslan Bukin * Copyright (c) 2015 Ruslan Bukin <br@bsdpad.com> 3bc88bb2bSRuslan Bukin * All rights reserved. 4bc88bb2bSRuslan Bukin * 5bc88bb2bSRuslan Bukin * This software was developed by the University of Cambridge Computer 6bc88bb2bSRuslan Bukin * Laboratory with support from ARM Ltd. 7bc88bb2bSRuslan Bukin * 8bc88bb2bSRuslan Bukin * Redistribution and use in source and binary forms, with or without 9bc88bb2bSRuslan Bukin * modification, are permitted provided that the following conditions 10bc88bb2bSRuslan Bukin * are met: 11bc88bb2bSRuslan Bukin * 1. Redistributions of source code must retain the above copyright 12bc88bb2bSRuslan Bukin * notice, this list of conditions and the following disclaimer. 13bc88bb2bSRuslan Bukin * 2. Redistributions in binary form must reproduce the above copyright 14bc88bb2bSRuslan Bukin * notice, this list of conditions and the following disclaimer in the 15bc88bb2bSRuslan Bukin * documentation and/or other materials provided with the distribution. 16bc88bb2bSRuslan Bukin * 17bc88bb2bSRuslan Bukin * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 18bc88bb2bSRuslan Bukin * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19bc88bb2bSRuslan Bukin * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20bc88bb2bSRuslan Bukin * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 21bc88bb2bSRuslan Bukin * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22bc88bb2bSRuslan Bukin * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23bc88bb2bSRuslan Bukin * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24bc88bb2bSRuslan Bukin * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25bc88bb2bSRuslan Bukin * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26bc88bb2bSRuslan Bukin * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27bc88bb2bSRuslan Bukin * SUCH DAMAGE. 28bc88bb2bSRuslan Bukin */ 29bc88bb2bSRuslan Bukin 30bc88bb2bSRuslan Bukin #ifndef _DEV_HWPMC_ARMV8_H_ 31bc88bb2bSRuslan Bukin #define _DEV_HWPMC_ARMV8_H_ 32bc88bb2bSRuslan Bukin 33bc88bb2bSRuslan Bukin #define ARMV8_PMC_CAPS (PMC_CAP_INTERRUPT | PMC_CAP_USER | \ 34bc88bb2bSRuslan Bukin PMC_CAP_SYSTEM | PMC_CAP_EDGE | \ 35bc88bb2bSRuslan Bukin PMC_CAP_THRESHOLD | PMC_CAP_READ | \ 36bc88bb2bSRuslan Bukin PMC_CAP_WRITE | PMC_CAP_INVERT | \ 37bc88bb2bSRuslan Bukin PMC_CAP_QUALIFIER) 38bc88bb2bSRuslan Bukin 39bc88bb2bSRuslan Bukin #define ARMV8_RELOAD_COUNT_TO_PERFCTR_VALUE(R) (-(R)) 40bc88bb2bSRuslan Bukin #define ARMV8_PERFCTR_VALUE_TO_RELOAD_COUNT(P) (-(P)) 41bc88bb2bSRuslan Bukin 42bc88bb2bSRuslan Bukin #ifdef _KERNEL 43bc88bb2bSRuslan Bukin /* MD extension for 'struct pmc' */ 44bc88bb2bSRuslan Bukin struct pmc_md_arm64_pmc { 45*915161b3SAndrew Turner uint64_t pm_arm64_evsel; 46bc88bb2bSRuslan Bukin }; 47bc88bb2bSRuslan Bukin #endif /* _KERNEL */ 48bc88bb2bSRuslan Bukin #endif /* _DEV_HWPMC_ARMV8_H_ */ 49