我在用户模式下使用cortex A8并试图读取性能计数器。
根据a8 trm,应该从特权模式启用寄存器。 因此使用kernle模块启用了性能计数器:
/ *启用用户模式访问性能计数器* /
asm(“MCR p15,0,%0,C9,C14,0 \ n \ t”::“r”(1));
/ *禁用计数器溢出中断(以防万一)* /
asm(“MCR p15,0,%0,C9,C14,2 \ n \ t”::“r”(0x8000000f));
现在尝试阅读寄存器:
asm(“MRC p15,0,%0,c9,c14,0 \ t \ n”:“= r”(值));
在用户模式下给我0。 在内核init模块中打印给出1(插入时)。
为什么它不同?
感谢您的建议!!