当前位置: 首页 > news >正文

网站建设公司广告公司名logo设计图片

网站建设公司广告,公司名logo设计图片,展馆设计布展,c2c模式的特点有哪些ARM 的时钟周期计数保存在PMCCNTR 寄存器#xff0c;不像x86用户态可以直接读取#xff0c;需内核态使能#xff0c;一种是在内核中使能#xff0c;比如init#xff0c;比较简单的是在模块中使能。 本来写了两个#xff0c;arm32一个#xff0c;arm64一个#xff0c;方…ARM 的时钟周期计数保存在PMCCNTR 寄存器不像x86用户态可以直接读取需内核态使能一种是在内核中使能比如init比较简单的是在模块中使能。 本来写了两个arm32一个arm64一个方便对比合在了一起。 只测试了32位cortex-a9双核, 还有 个64位a76 a55。 enpmu.c #include linux/module.h #include linux/kernel.h #include linux/smp.hMODULE_AUTHOR(cn); MODULE_LICENSE(GPL); MODULE_VERSION(0.0);#if !defined(__arm__) !defined(__aarch64__) #error module only support arm32 arm64. #endif#ifdef __aarch64__ typedef unsigned long ulint; //64 #elif defined __arm__ typedef unsigned int ulint; //32 #endifstatic void en_access(void*) {ulint i0,tmpvar0;#ifdef __aarch64__asm volatile(mrs %0, mpidr_el1 :r(i));i (i 8) 0xff; #elseasm volatile(mrc p15,0,%0,c0,c0,5 :r(i));i i 3; #endif asm volatile ( #ifdef __aarch64__mrs %0,pmuserenr_el0 \norr %0, %0,%1 \nmsr pmuserenr_el0,%0 #elsemrc p15, 0, %0, c9, c14, 0 \norr %0, %0,%1 \nmcr p15, 0, %0, c9, c14, 0 \n #endif:r(tmpvar):r(0xf));asm volatile( #ifdef __aarch64__mrs %0, pmcr_el0 \norr %0, %0, %1 \n //32 0x41bic %0, %0, %2 \nmsr pmcr_el0,%0 \n #elsemrc p15, 0, %0, c9, c12, 0 \norr %0, %0,%1 \nbic %0, %0, %2 \nmcr p15, 0, %0, c9, c12, 0 \n #endif:r(tmpvar):r(0x81),r(0x28));asm volatile( #ifdef __aarch64__msr pmcntenset_el0,%1 \nmrs %0, cntvct_el0 \n #elsemcr p15, 0, %1, c9, c12, 1 \nmrc p15, 0, %0, c9, c13, 0 \n #endif:r(tmpvar) :r(0xffffffff));printk(core %lu tsc %lx,(unsigned long)i, (unsigned long)tmpvar ); }static void restore_access(void*) {ulint i,tmpvar0; #ifdef __aarch64__asm volatile( mrs %0, mpidr_el1: r(i));i (i 8)0xff; #elseasm volatile(mrc p15,0,%0,c0,c0,5 \n : r(i));i i 3; #endifasm volatile ( #ifdef __aarch64__mrs %0,pmcr_el0 \nbic %0,%0, %2 \nmsr pmcr_el0,%0\nmsr pmuserenr_el0,%1\nmrs %0, cntvct_el0 \n #elsemrc p15, 0, %0, c9, c14, 0 \nbic %0,%0, %2 \nmcr p15, 0, %0, c9, c14, 0 \nmcr p15, 0, %1, c9, c12, 1 \nmrc p15, 0, %0, c9, c13, 0 \n #endif:r (tmpvar):r(0),r(1));printk(un core %lx tsc %lx,(unsigned long)i, (unsigned long)tmpvar );} static int __init start(void) { on_each_cpu(en_access, NULL, 1);printk(KERN_INFO pmu access enabled\n); return 0; } static void __exit stop(void) { on_each_cpu(restore_access, NULL, 1);printk(KERN_INFO pmu access disabled\n); } module_init(start); module_exit(stop); Makefile obj-m enpmu.o all:make -C /lib/modules/$(shell uname -r)/build/ M$(PWD) modules clean:make -C /lib/modules/$(shell uname -r)/build M$(PWD) clean直接 makeinsmod enpmu.ko rmmod enpmu然后就可以读取了 以下arm32 arm64 x86_64读取方法 test.c #include stdio.h #ifndef __arm__ typedef unsigned long ulint; #else typedef unsigned int ulint; #endif int main() {ulint ct 0; #ifdef __aarch64__asm volatile(mrs %0, cntvct_el0 :r(ct)); #elif defined __arm__asm volatile(mrc p15,0,%0, c9, c13, 0:r(ct)); #elif defined __x86_64__asm volatile(rdtsc ; shl $32, %%rdx ; or %%rdx, %0: a(ct)); #endifprintf(%lx\n,(unsigned long)ct); }gcc test.c ./a.out taskset -c 1 ./a.outtaskset -c 选择在哪个核上运行。 附录 CNTVCT_EL0pmcntenset_el0 Performance Monitors Count Enable Set registerpurpose Enables the Cycle Count Register· C [31]· 0x1 » PMCCNTR_EL0 enable· Pm» PMEVCNTRn_EL0 enable 0xFFFFFFFFpmuserenr_el0 Performance Monitors User Enable Register Enable or disables EL0 access to the performance Monitors; ER [3] » Event counters Read enable, » 1 en rw CR [2] » Cycle counter Read enable· » 32 MRC read PMCCNTR MRRC read PMCCNTR SW[1] software increment register Write enable » 1 En [0] Enable » Enables EL0 read/write access to PMU registers 0xFPMCR_EL0 bit[9] Freeze-on-overflow 0 LC [6] 1 aarch32 supported long cycle » 0x1 DP [5] Disable cycle counter when event counting is prohibited·0x0 not affectedD [3] clock divider··0 pmccntr_el0 counts every clock cycle E [0] enable1 Affected counters are enabled by pmcntenset_el0mrc/mcr Op1 CRm Op2 Name Type Reset Description 0 c12 0 PMCR RW 0x41093000 Performance Monitor Control Register1 PMCNTENSET RW 0x00000000 Count Enable Set Register2 PMCNTENCLR RW 0x00000000 Count Enable Clear Register3 PMOVSR RW - Overflow Flag Status Register4 PMSWINC WO - Software Increment Register5 PMSELR RW 0x00000000 Event Counter Selection Registerc13 0 PMCCNTR RW - Cycle Count Register1 PMXEVTYPER RW - Event Type Selection Register2 PMXEVCNTR RW - Event Count Registersc14 0 PMUSERENR RWa 0x00000000 User Enable Register1 PMINTENSET RW 0x00000000 Interrupt Enable Set Register2 PMINTENCLR RW 0x00000000 Interrupt Enable Clear Register
http://www.dnsts.com.cn/news/13710.html

相关文章:

  • 线在科技成都网站推广公司天津全包圆装修公司电话
  • 泰安房产信息网官网首页seo全称
  • 怎样在网站上做超链接苏州网站建设制作工作室
  • 集宁做网站的公司wordpress 年度归档
  • 涉县住房与城乡建设厅网站注册公司名字有没有重复在哪可以查
  • 重庆璧山网站制作公司电话大学 生免费商业网站设计
  • 网站 公众号信息化建设工作wordpress下载类型主题
  • 贵阳网站设计方案公司主页怎么制作
  • flash+xml网站模板手机百度账号登录入口
  • win7怎么做网站服务器在线做ps是什么网站
  • 网站开发绩效考核与薪酬最近的热点新闻事件
  • 威海企业做网站哪家好工商局网站查询入口
  • 做网站横幅的图片山东省住房和建设厅注册中心网站
  • 温州网站设计服务商做网站要找什么软件
  • 手机用什么软件做网站高级软件开发工程师证书含金量
  • 做外贸没有网站可以吗有什么彩票网站做代理好点
  • 购物网站开发设计做短视频的能跟几个网站签约
  • 个人网站模板代码网站设计制作都有哪些
  • 承德网站建设价格怎么把网站做二维码
  • 做外贸的免费网站佛山营销手机网站建设
  • 郑州哪家公司给国外做网站响应式布局基本知识
  • 网站点击率如何做影视网站开发
  • 辽源做网站南通做网站公司
  • 外汇自动跟单网站开发如何给网站弄ftp
  • linux视频播放网站在哪些网站可以发布推广信息
  • 如何查询网站打开速度变慢虚拟主机网站源码
  • 网站建设优化公司排名wordpress弹出搜索
  • seo快速建站看片应该搜什么关键词哪些词
  • 织梦建站教程下载wordpress文章点击数插件
  • 唐山设计网站公司网站建设的请示报告