/* * POWER Data Stream Control Register (DSCR) * * This header file contains helper functions and macros * required for all the DSCR related test cases. * * Copyright 2012, Anton Blanchard, IBM Corporation. * Copyright 2015, Anshuman Khandual, IBM Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published * by the Free Software Foundation. */ #ifndef _SELFTESTS_POWERPC_DSCR_DSCR_H #define _SELFTESTS_POWERPC_DSCR_DSCR_H #include #include #include #include #include #include #include #include #include #include #include #include "utils.h" #define THREADS 100 /* Max threads */ #define COUNT 100 /* Max iterations */ #define DSCR_MAX 16 /* Max DSCR value */ #define LEN_MAX 100 /* Max name length */ #define DSCR_DEFAULT "/sys/devices/system/cpu/dscr_default" #define CPU_PATH "/sys/devices/system/cpu/" #define rmb() asm volatile("lwsync":::"memory") #define wmb() asm volatile("lwsync":::"memory") #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) /* Prilvilege state DSCR access */ inline unsigned long get_dscr(void) { unsigned long ret; asm volatile("mfspr %0,%1" : "=r" (ret) : "i" (SPRN_DSCR_PRIV)); return ret; } inline void set_dscr(unsigned long val) { asm volatile("mtspr %1,%0" : : "r" (val), "i" (SPRN_DSCR_PRIV)); } /* Problem state DSCR access */ inline unsigned long get_dscr_usr(void) { unsigned long ret; asm volatile("mfspr %0,%1" : "=r" (ret) : "i" (SPRN_DSCR)); return ret; } inline void set_dscr_usr(unsigned long val) { asm volatile("mtspr %1,%0" : : "r" (val), "i" (SPRN_DSCR)); } /* Default DSCR access */ unsigned long get_default_dscr(void) { int fd = -1, ret; char buf[16]; unsigned long val; if (fd == -1) { fd = open(DSCR_DEFAULT, O_RDONLY); if (fd == -1) { perror("open() failed"); exit(1); } } memset(buf, 0, sizeof(buf)); lseek(fd, 0, SEEK_SET); ret = read(fd, buf, sizeof(buf)); if (ret == -1) { perror("read() failed"); exit(1); } sscanf(buf, "%lx", &val); close(fd); return val; } void set_default_dscr(unsigned long val) { int fd = -1, ret; char buf[16]; if (fd == -1) { fd = open(DSCR_DEFAULT, O_RDWR); if (fd == -1) { perror("open() failed"); exit(1); } } sprintf(buf, "%lx\n", val); ret = write(fd, buf, strlen(buf)); if (ret == -1) { perror("write() failed"); exit(1); } close(fd); } double uniform_deviate(int seed) { return seed * (1.0 / (RAND_MAX + 1.0)); } #endif /* _SELFTESTS_POWERPC_DSCR_DSCR_H */ '>committer
ModeNameSize
-rw-r--r--alphascale,asm9260.h2695logplain
-rw-r--r--at91.h751logplain
-rw-r--r--ath79-clk.h479logplain
-rw-r--r--axis,artpec6-clkctrl.h1112logplain
-rw-r--r--bcm-cygnus.h3135logplain
-rw-r--r--bcm-ns2.h2915logplain
-rw-r--r--bcm-nsp.h2148logplain
-rw-r--r--bcm21664.h1984logplain
-rw-r--r--bcm281xx.h2456logplain
-rw-r--r--bcm2835-aux.h635logplain
-rw-r--r--bcm2835.h1962logplain
-rw-r--r--berlin2.h1034logplain
-rw-r--r--berlin2q.h695logplain
-rw-r--r--clps711x-clock.h718logplain
-rw-r--r--efm32-cmu.h1112logplain
-rw-r--r--exynos-audss-clk.h597logplain
-rw-r--r--exynos3250.h9083logplain
-rw-r--r--exynos4.h8284logplain
-rw-r--r--exynos4415.h9828logplain
-rw-r--r--exynos5250.h4616logplain
-rw-r--r--exynos5260-clk.h14876logplain
-rw-r--r--exynos5410.h1689logplain
-rw-r--r--exynos5420.h6857logplain
-rw-r--r--exynos5433.h45372logplain
-rw-r--r--exynos5440.h1141logplain
-rw-r--r--exynos7-clk.h5281logplain
-rw-r--r--gxbb-aoclkc.h2866logplain
-rw-r--r--gxbb-clkc.h592logplain
-rw-r--r--hi3516cv300-clock.h1668logplain
-rw-r--r--hi3519-clock.h1328logplain
-rw-r--r--hi3620-clock.h4496logplain
-rw-r--r--hi6220-clock.h4508logplain
-rw-r--r--hip04-clock.h1137logplain
-rw-r--r--histb-clock.h2012logplain
-rw-r--r--hix5hd2-clock.h2415logplain
-rw-r--r--imx1-clock.h1055logplain
-rw-r--r--imx21-clock.h2461logplain
-rw-r--r--imx27-clock.h3494logplain
-rw-r--r--imx5-clock.h7212logplain
-rw-r--r--imx6qdl-clock.h9593logplain
-rw-r--r--imx6sl-clock.h5849logplain
-rw-r--r--imx6sx-clock.h9099logplain
-rw-r--r--imx6ul-clock.h8203logplain
-rw-r--r--imx7d-clock.h15974logplain
-rw-r--r--jz4740-cgu.h1028logplain
-rw-r--r--jz4780-cgu.h2470logplain
-rw-r--r--lpc18xx-ccu.h2134logplain
-rw-r--r--lpc18xx-cgu.h1142logplain
-rw-r--r--lpc32xx-clock.h1633logplain
-rw-r--r--lsi,axm5516-clks.h974logplain
-rw-r--r--marvell,mmp2.h2022logplain
-rw-r--r--marvell,pxa168.h1654logplain
-rw-r--r--marvell,pxa1928.h1535logplain
-rw-r--r--marvell,pxa910.h1598logplain
-rw-r--r--maxim,max77620.h632logplain
-rw-r--r--maxim,max77686.h648logplain
-rw-r--r--maxim,max77802.h630logplain
-rw-r--r--meson8b-clkc.h523logplain
-rw-r--r--microchip,pic32-clock.h1150logplain
-rw-r--r--mpc512x-clock.h2236logplain
-rw-r--r--mt2701-clk.h13832logplain
-rw-r--r--mt8135-clk.h5641logplain
-rw-r--r--mt8173-clk.h9293logplain
-rw-r--r--oxsemi,ox810se.h1002logplain
-rw-r--r--oxsemi,ox820.h1203logplain
-rw-r--r--pistachio-clk.h4863logplain
-rw-r--r--pxa-clock.h1715logplain
-rw-r--r--qcom,gcc-apq8084.h12872logplain
-rw-r--r--qcom,gcc-ipq4019.h5423logplain
-rw-r--r--qcom,gcc-ipq806x.h8574logplain
-rw-r--r--qcom,gcc-mdm9615.h9497logplain
-rw-r--r--qcom,gcc-msm8660.h7932logplain
-rw-r--r--qcom,gcc-msm8916.h6190logplain
-rw-r--r--qcom,gcc-msm8960.h9342logplain
-rw-r--r--qcom,gcc-msm8974.h12340logplain
-rw-r--r--qcom,gcc-msm8994.h4858logplain
-rw-r--r--qcom,gcc-msm8996.h12575logplain
-rw-r--r--qcom,lcc-ipq806x.h899logplain
-rw-r--r--qcom,lcc-mdm9615.h1701logplain
-rw-r--r--qcom,lcc-msm8960.h1616logplain
-rw-r--r--qcom,mmcc-apq8084.h5722logplain
-rw-r--r--qcom,mmcc-msm8960.h4109logplain
-rw-r--r--qcom,mmcc-msm8974.h5223logplain
-rw-r--r--qcom,mmcc-msm8996.h9403logplain
-rw-r--r--qcom,rpmcc.h2101logplain
-rw-r--r--r7s72100-clock.h1218logplain
-rw-r--r--r8a73a4-clock.h1596logplain
-rw-r--r--r8a7740-clock.h1992logplain
-rw-r--r--r8a7743-cpg-mssr.h1269logplain
-rw-r--r--r8a7745-cpg-mssr.h1298logplain
-rw-r--r--r8a7778-clock.h1855logplain
-rw-r--r--r8a7779-clock.h1647logplain
-rw-r--r--r8a7790-clock.h4367logplain
-rw-r--r--r8a7791-clock.h4388logplain
-rw-r--r--r8a7792-clock.h2562logplain
-rw-r--r--r8a7793-clock.h4561logplain
-rw-r--r--r8a7794-clock.h3679logplain
-rw-r--r--r8a7795-cpg-mssr.h1890logplain
-rw-r--r--r8a7796-cpg-mssr.h2066logplain
-rw-r--r--renesas-cpg-mssr.h542logplain
-rw-r--r--rk1108-cru.h6605logplain
-rw-r--r--rk3036-cru.h4584logplain
-rw-r--r--rk3066a-cru.h1068logplain
-rw-r--r--rk3188-cru-common.h6105logplain
-rw-r--r--rk3188-cru.h1435logplain