mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ARM: hw_breakpoint: Workaround for Cortex-A12/A17
It seems Cortex-A12/A17 do not report report watchpoint hit address that matches the watchpoint set as ARM64. Add this workaround for pass Android 8+ CTS bionic ptrace watchpoint_imprecise. Change-Id: I22f08a081d1436931cbed4e8b340237799299737 Signed-off-by: Tao Huang <huangtao@rock-chips.com>
This commit is contained in:
@@ -725,6 +725,20 @@ static void watchpoint_handler(unsigned long addr, unsigned int fsr,
|
||||
|
||||
/* Check if the watchpoint value matches. */
|
||||
val = read_wb_reg(ARM_BASE_WVR + i);
|
||||
/*
|
||||
* It seems Cortex-A12/A17 do not report report
|
||||
* watchpoint hit address that matches the watchpoint
|
||||
* set as ARM64.
|
||||
* Add this workaround for pass Android 8+ CTS
|
||||
* bionic ptrace watchpoint_imprecise.
|
||||
*/
|
||||
if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A12) {
|
||||
unsigned long dist;
|
||||
|
||||
dist = val > addr ? val - addr : addr - val;
|
||||
if (dist > 8)
|
||||
goto unlock;
|
||||
} else
|
||||
if (val != (addr & ~alignment_mask))
|
||||
goto unlock;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user