Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Will Deacon
On Thu, Mar 08, 2018 at 08:41:59AM -0800, Doug Anderson wrote:
> Hi,
> 
> On Thu, Mar 8, 2018 at 8:19 AM, Daniel Thompson
>  wrote:
> > On 05/03/18 23:43, Douglas Anderson wrote:
> >>
> >> This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
> >> registers on sleeping tasks") but for arm64.  Nuff said.
> >>
> >> ...well, perhaps I could also add that task_pt_regs are userspace
> >> registers and that's not what kgdb is supposed to be reporting.  We're
> >> supposed to be reporting kernel registers.
> >>
> >> Signed-off-by: Douglas Anderson 
> >
> >
> > I hacked together a (still very immature) kgdb test suite[1] around the turn
> > of the year. Whilst its not quite solid enough for me to recommend others
> > deploy it except out of curiosity... so I haven't yet started yelling about
> > test suite failures except in the privacy of my own head.
> >
> > However I can confirm that this patch fixes one of the test suite failures I
> > haven't had time to blame allocate yet!
> >
> > So...
> > Tested-by: Daniel Thompson 
> 
> Thanks for your testing!  ...I'll have to check out your test suite soon.
> 
> 
> > BTW is this something that should Cc: stable?
> 
> It wouldn't hurt if this made it back to stable on a best-effort
> approach.  The problem has been there since the beginning, so it's not
> like it's fixing a regression that cropped up in a specific version.
> ...but it does fix a bug, so probably Cc stable makes sense.  I guess
> I'd leave it up to the maintainer that applies the patch?

I've already put this into -next, so I don't really want to rebase just for
this. If you think it's important, please send to sta...@vger.kernel.org
once it's landed in mainline.

Will


Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Will Deacon
On Thu, Mar 08, 2018 at 08:41:59AM -0800, Doug Anderson wrote:
> Hi,
> 
> On Thu, Mar 8, 2018 at 8:19 AM, Daniel Thompson
>  wrote:
> > On 05/03/18 23:43, Douglas Anderson wrote:
> >>
> >> This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
> >> registers on sleeping tasks") but for arm64.  Nuff said.
> >>
> >> ...well, perhaps I could also add that task_pt_regs are userspace
> >> registers and that's not what kgdb is supposed to be reporting.  We're
> >> supposed to be reporting kernel registers.
> >>
> >> Signed-off-by: Douglas Anderson 
> >
> >
> > I hacked together a (still very immature) kgdb test suite[1] around the turn
> > of the year. Whilst its not quite solid enough for me to recommend others
> > deploy it except out of curiosity... so I haven't yet started yelling about
> > test suite failures except in the privacy of my own head.
> >
> > However I can confirm that this patch fixes one of the test suite failures I
> > haven't had time to blame allocate yet!
> >
> > So...
> > Tested-by: Daniel Thompson 
> 
> Thanks for your testing!  ...I'll have to check out your test suite soon.
> 
> 
> > BTW is this something that should Cc: stable?
> 
> It wouldn't hurt if this made it back to stable on a best-effort
> approach.  The problem has been there since the beginning, so it's not
> like it's fixing a regression that cropped up in a specific version.
> ...but it does fix a bug, so probably Cc stable makes sense.  I guess
> I'd leave it up to the maintainer that applies the patch?

I've already put this into -next, so I don't really want to rebase just for
this. If you think it's important, please send to sta...@vger.kernel.org
once it's landed in mainline.

Will


Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Doug Anderson
Hi,

On Thu, Mar 8, 2018 at 8:19 AM, Daniel Thompson
 wrote:
> On 05/03/18 23:43, Douglas Anderson wrote:
>>
>> This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
>> registers on sleeping tasks") but for arm64.  Nuff said.
>>
>> ...well, perhaps I could also add that task_pt_regs are userspace
>> registers and that's not what kgdb is supposed to be reporting.  We're
>> supposed to be reporting kernel registers.
>>
>> Signed-off-by: Douglas Anderson 
>
>
> I hacked together a (still very immature) kgdb test suite[1] around the turn
> of the year. Whilst its not quite solid enough for me to recommend others
> deploy it except out of curiosity... so I haven't yet started yelling about
> test suite failures except in the privacy of my own head.
>
> However I can confirm that this patch fixes one of the test suite failures I
> haven't had time to blame allocate yet!
>
> So...
> Tested-by: Daniel Thompson 

Thanks for your testing!  ...I'll have to check out your test suite soon.


> BTW is this something that should Cc: stable?

It wouldn't hurt if this made it back to stable on a best-effort
approach.  The problem has been there since the beginning, so it's not
like it's fixing a regression that cropped up in a specific version.
...but it does fix a bug, so probably Cc stable makes sense.  I guess
I'd leave it up to the maintainer that applies the patch?


-DougOn Thu, Mar
8, 2018 at 8:19 AM, Daniel Thompson mailto:daniel.thomp...@linaro.org;
target="_blank">daniel.thomp...@linaro.org
wrote:On
05/03/18 23:43, Douglas Anderson wrote:

This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64. Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting. We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson mailto:diand...@chromium.org;
target="_blank">diand...@chromium.org


I hacked together a (still very immature) kgdb test suite[1] around
the turn of the year. Whilst its not quite solid enough for me to
recommend others deploy it except out of curiosity... so I haven't yet
started yelling about test suite failures except in the privacy of my
own head.

However I can confirm that this patch fixes one of the test suite
failures I haven't had time to blame allocate yet!

So...
Tested-by: Daniel Thompson mailto:daniel.thomp...@linaro.org;
target="_blank">daniel.thomp...@linaro.org

BTW is this something that should Cc: stable?


Daniel.

[1] https://github.com/daniel-thompson/kgdbtest;
rel="noreferrer" target="_blank"
data-saferedirecturl="https://www.google.com/url?hl=enq=https://github.com/daniel-thompson/kgdbtestsource=gmailust=152061344390usg=AFQjCNHzh_tGdP65DdFEQo-ofF_LCI5XBQ;>https://github.com/daniel-thompson/kgdbtest



---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

 arch/arm64/kernel/kgdb.c | 21 -
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct
pt_regs *regs)
 void
 sleeping_thread_to_gdb_regs(unsigned long *gdb_regs,
struct task_struct *task)
 {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context =
task-thread.cpu_context;
/* Initialize to zero */
memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void
*)thread_regs-regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments
in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES,
thread_regs);
+
+   gdb_regs[19] = cpu_context-x19;
+   gdb_regs[20] = cpu_context-x20;
+   gdb_regs[21] = cpu_context-x21;
+   gdb_regs[22] = cpu_context-x22;
+   gdb_regs[23] = cpu_context-x23;
+   gdb_regs[24] = cpu_context-x24;
+   gdb_regs[25] = cpu_context-x25;
+   gdb_regs[26] = cpu_context-x26;
+   gdb_regs[27] = cpu_context-x27;
+   gdb_regs[28] = cpu_context-x28;
+   gdb_regs[29] = cpu_context-fp;
+
+   gdb_regs[31] = cpu_context-sp;
+   gdb_regs[32] = cpu_context-pc;
 }
  void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)






Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Doug Anderson
Hi,

On Thu, Mar 8, 2018 at 8:19 AM, Daniel Thompson
 wrote:
> On 05/03/18 23:43, Douglas Anderson wrote:
>>
>> This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
>> registers on sleeping tasks") but for arm64.  Nuff said.
>>
>> ...well, perhaps I could also add that task_pt_regs are userspace
>> registers and that's not what kgdb is supposed to be reporting.  We're
>> supposed to be reporting kernel registers.
>>
>> Signed-off-by: Douglas Anderson 
>
>
> I hacked together a (still very immature) kgdb test suite[1] around the turn
> of the year. Whilst its not quite solid enough for me to recommend others
> deploy it except out of curiosity... so I haven't yet started yelling about
> test suite failures except in the privacy of my own head.
>
> However I can confirm that this patch fixes one of the test suite failures I
> haven't had time to blame allocate yet!
>
> So...
> Tested-by: Daniel Thompson 

Thanks for your testing!  ...I'll have to check out your test suite soon.


> BTW is this something that should Cc: stable?

It wouldn't hurt if this made it back to stable on a best-effort
approach.  The problem has been there since the beginning, so it's not
like it's fixing a regression that cropped up in a specific version.
...but it does fix a bug, so probably Cc stable makes sense.  I guess
I'd leave it up to the maintainer that applies the patch?


-DougOn Thu, Mar
8, 2018 at 8:19 AM, Daniel Thompson mailto:daniel.thomp...@linaro.org;
target="_blank">daniel.thomp...@linaro.org
wrote:On
05/03/18 23:43, Douglas Anderson wrote:

This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64. Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting. We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson mailto:diand...@chromium.org;
target="_blank">diand...@chromium.org


I hacked together a (still very immature) kgdb test suite[1] around
the turn of the year. Whilst its not quite solid enough for me to
recommend others deploy it except out of curiosity... so I haven't yet
started yelling about test suite failures except in the privacy of my
own head.

However I can confirm that this patch fixes one of the test suite
failures I haven't had time to blame allocate yet!

So...
Tested-by: Daniel Thompson mailto:daniel.thomp...@linaro.org;
target="_blank">daniel.thomp...@linaro.org

BTW is this something that should Cc: stable?


Daniel.

[1] https://github.com/daniel-thompson/kgdbtest;
rel="noreferrer" target="_blank"
data-saferedirecturl="https://www.google.com/url?hl=enq=https://github.com/daniel-thompson/kgdbtestsource=gmailust=152061344390usg=AFQjCNHzh_tGdP65DdFEQo-ofF_LCI5XBQ;>https://github.com/daniel-thompson/kgdbtest



---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

 arch/arm64/kernel/kgdb.c | 21 -
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct
pt_regs *regs)
 void
 sleeping_thread_to_gdb_regs(unsigned long *gdb_regs,
struct task_struct *task)
 {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context =
task-thread.cpu_context;
/* Initialize to zero */
memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void
*)thread_regs-regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments
in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES,
thread_regs);
+
+   gdb_regs[19] = cpu_context-x19;
+   gdb_regs[20] = cpu_context-x20;
+   gdb_regs[21] = cpu_context-x21;
+   gdb_regs[22] = cpu_context-x22;
+   gdb_regs[23] = cpu_context-x23;
+   gdb_regs[24] = cpu_context-x24;
+   gdb_regs[25] = cpu_context-x25;
+   gdb_regs[26] = cpu_context-x26;
+   gdb_regs[27] = cpu_context-x27;
+   gdb_regs[28] = cpu_context-x28;
+   gdb_regs[29] = cpu_context-fp;
+
+   gdb_regs[31] = cpu_context-sp;
+   gdb_regs[32] = cpu_context-pc;
 }
  void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)






Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Daniel Thompson

On 05/03/18 23:43, Douglas Anderson wrote:

This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64.  Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting.  We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson 


I hacked together a (still very immature) kgdb test suite[1] around the 
turn of the year. Whilst its not quite solid enough for me to recommend 
others deploy it except out of curiosity... so I haven't yet started 
yelling about test suite failures except in the privacy of my own head.


However I can confirm that this patch fixes one of the test suite 
failures I haven't had time to blame allocate yet!


So...
Tested-by: Daniel Thompson 

BTW is this something that should Cc: stable?


Daniel.

[1] https://github.com/daniel-thompson/kgdbtest



---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

  arch/arm64/kernel/kgdb.c | 21 -
  1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs 
*regs)
  void
  sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
  {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context = >thread.cpu_context;
  
  	/* Initialize to zero */

memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void *)thread_regs->regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES, thread_regs);
+
+   gdb_regs[19] = cpu_context->x19;
+   gdb_regs[20] = cpu_context->x20;
+   gdb_regs[21] = cpu_context->x21;
+   gdb_regs[22] = cpu_context->x22;
+   gdb_regs[23] = cpu_context->x23;
+   gdb_regs[24] = cpu_context->x24;
+   gdb_regs[25] = cpu_context->x25;
+   gdb_regs[26] = cpu_context->x26;
+   gdb_regs[27] = cpu_context->x27;
+   gdb_regs[28] = cpu_context->x28;
+   gdb_regs[29] = cpu_context->fp;
+
+   gdb_regs[31] = cpu_context->sp;
+   gdb_regs[32] = cpu_context->pc;
  }
  
  void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)






Re: [PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-08 Thread Daniel Thompson

On 05/03/18 23:43, Douglas Anderson wrote:

This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64.  Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting.  We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson 


I hacked together a (still very immature) kgdb test suite[1] around the 
turn of the year. Whilst its not quite solid enough for me to recommend 
others deploy it except out of curiosity... so I haven't yet started 
yelling about test suite failures except in the privacy of my own head.


However I can confirm that this patch fixes one of the test suite 
failures I haven't had time to blame allocate yet!


So...
Tested-by: Daniel Thompson 

BTW is this something that should Cc: stable?


Daniel.

[1] https://github.com/daniel-thompson/kgdbtest



---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

  arch/arm64/kernel/kgdb.c | 21 -
  1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs 
*regs)
  void
  sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
  {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context = >thread.cpu_context;
  
  	/* Initialize to zero */

memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void *)thread_regs->regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES, thread_regs);
+
+   gdb_regs[19] = cpu_context->x19;
+   gdb_regs[20] = cpu_context->x20;
+   gdb_regs[21] = cpu_context->x21;
+   gdb_regs[22] = cpu_context->x22;
+   gdb_regs[23] = cpu_context->x23;
+   gdb_regs[24] = cpu_context->x24;
+   gdb_regs[25] = cpu_context->x25;
+   gdb_regs[26] = cpu_context->x26;
+   gdb_regs[27] = cpu_context->x27;
+   gdb_regs[28] = cpu_context->x28;
+   gdb_regs[29] = cpu_context->fp;
+
+   gdb_regs[31] = cpu_context->sp;
+   gdb_regs[32] = cpu_context->pc;
  }
  
  void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)






[PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-05 Thread Douglas Anderson
This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64.  Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting.  We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson 
---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

 arch/arm64/kernel/kgdb.c | 21 -
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs 
*regs)
 void
 sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
 {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context = >thread.cpu_context;
 
/* Initialize to zero */
memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void *)thread_regs->regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES, thread_regs);
+
+   gdb_regs[19] = cpu_context->x19;
+   gdb_regs[20] = cpu_context->x20;
+   gdb_regs[21] = cpu_context->x21;
+   gdb_regs[22] = cpu_context->x22;
+   gdb_regs[23] = cpu_context->x23;
+   gdb_regs[24] = cpu_context->x24;
+   gdb_regs[25] = cpu_context->x25;
+   gdb_regs[26] = cpu_context->x26;
+   gdb_regs[27] = cpu_context->x27;
+   gdb_regs[28] = cpu_context->x28;
+   gdb_regs[29] = cpu_context->fp;
+
+   gdb_regs[31] = cpu_context->sp;
+   gdb_regs[32] = cpu_context->pc;
 }
 
 void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)
-- 
2.16.2.395.g2e18187dfd-goog



[PATCH v2] arm64/debug: Fix registers on sleeping tasks

2018-03-05 Thread Douglas Anderson
This is the equivalent of commit 001bf455d206 ("ARM: 8428/1: kgdb: Fix
registers on sleeping tasks") but for arm64.  Nuff said.

...well, perhaps I could also add that task_pt_regs are userspace
registers and that's not what kgdb is supposed to be reporting.  We're
supposed to be reporting kernel registers.

Signed-off-by: Douglas Anderson 
---

Changes in v2:
- Init cpu_context in one line
- Explain that task_pt_regs are userspace

 arch/arm64/kernel/kgdb.c | 21 -
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/arch/arm64/kernel/kgdb.c b/arch/arm64/kernel/kgdb.c
index 2122cd187f19..a20de58061a8 100644
--- a/arch/arm64/kernel/kgdb.c
+++ b/arch/arm64/kernel/kgdb.c
@@ -138,14 +138,25 @@ int dbg_set_reg(int regno, void *mem, struct pt_regs 
*regs)
 void
 sleeping_thread_to_gdb_regs(unsigned long *gdb_regs, struct task_struct *task)
 {
-   struct pt_regs *thread_regs;
+   struct cpu_context *cpu_context = >thread.cpu_context;
 
/* Initialize to zero */
memset((char *)gdb_regs, 0, NUMREGBYTES);
-   thread_regs = task_pt_regs(task);
-   memcpy((void *)gdb_regs, (void *)thread_regs->regs, GP_REG_BYTES);
-   /* Special case for PSTATE (check comments in asm/kgdb.h for details) */
-   dbg_get_reg(33, gdb_regs + GP_REG_BYTES, thread_regs);
+
+   gdb_regs[19] = cpu_context->x19;
+   gdb_regs[20] = cpu_context->x20;
+   gdb_regs[21] = cpu_context->x21;
+   gdb_regs[22] = cpu_context->x22;
+   gdb_regs[23] = cpu_context->x23;
+   gdb_regs[24] = cpu_context->x24;
+   gdb_regs[25] = cpu_context->x25;
+   gdb_regs[26] = cpu_context->x26;
+   gdb_regs[27] = cpu_context->x27;
+   gdb_regs[28] = cpu_context->x28;
+   gdb_regs[29] = cpu_context->fp;
+
+   gdb_regs[31] = cpu_context->sp;
+   gdb_regs[32] = cpu_context->pc;
 }
 
 void kgdb_arch_set_pc(struct pt_regs *regs, unsigned long pc)
-- 
2.16.2.395.g2e18187dfd-goog