• Christophe Leroy's avatar
    powerpc/hw_breakpoints: Rewrite 8xx breakpoints to allow any address range size. · 39413ae0
    Christophe Leroy authored
    Unlike standard powerpc, Powerpc 8xx doesn't have SPRN_DABR, but
    it has a breakpoint support based on a set of comparators which
    allow more flexibility.
    
    Commit 4ad8622d ("powerpc/8xx: Implement hw_breakpoint")
    implemented breakpoints by emulating the DABR behaviour. It did
    this by setting one comparator the match 4 bytes at breakpoint address
    and the other comparator to match 4 bytes at breakpoint address + 4.
    
    Rewrite 8xx hw_breakpoint to make breakpoints match all addresses
    defined by the breakpoint address and length by making full use of
    comparators.
    
    Now, comparator E is set to match any address greater than breakpoint
    address minus one. Comparator F is set to match any address lower than
    breakpoint address plus breakpoint length. Addresses are aligned
    to 32 bits.
    
    When the breakpoint range starts at address 0, the breakpoint is set
    to match comparator F only. When the breakpoint range end at address
    0xffffffff, the breakpoint is set to match comparator E only.
    Otherwise the breakpoint is set to match comparator E and F.
    
    At the same time, use registers bit names instead of hardcoded values.
    Signed-off-by: default avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/05105deeaf63bc02151aea2cdeaf525534e0e9d4.1574790198.git.christophe.leroy@c-s.fr
    39413ae0
hw_breakpoint.c 10.5 KB