Skip to content

Commit

Permalink
powerpc: Add length setting to set_dawr
Browse files Browse the repository at this point in the history
Currently we set the length field in the DAWR to 0 which defaults it to one
double word (64bits) which is the same as the DABR.

Change this so that we can set it to longer values as supported by the DAWR.

Signed-off-by: Michael Neuling <mikey@neuling.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
  • Loading branch information
Michael Neuling authored and Benjamin Herrenschmidt committed Jan 29, 2013
1 parent f53d168 commit 05d694e
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion arch/powerpc/kernel/process.c
Original file line number Diff line number Diff line change
Expand Up @@ -409,7 +409,7 @@ static inline int set_dabr(struct arch_hw_breakpoint *brk)

static inline int set_dawr(struct arch_hw_breakpoint *brk)
{
unsigned long dawr, dawrx;
unsigned long dawr, dawrx, mrd;

dawr = brk->address;

Expand All @@ -419,6 +419,14 @@ static inline int set_dawr(struct arch_hw_breakpoint *brk)
<< (63 - 59); //* translate */
dawrx |= (brk->type & (HW_BRK_TYPE_PRIV_ALL)) \
>> 3; //* PRIM bits */
/* dawr length is stored in field MDR bits 48:53. Matches range in
doublewords (64 bits) baised by -1 eg. 0b000000=1DW and
0b111111=64DW.
brk->len is in bytes.
This aligns up to double word size, shifts and does the bias.
*/
mrd = ((brk->len + 7) >> 3) - 1;
dawrx |= (mrd & 0x3f) << (63 - 53);

if (ppc_md.set_dawr)
return ppc_md.set_dawr(dawr, dawrx);
Expand Down

0 comments on commit 05d694e

Please sign in to comment.