[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: PPC KGDB changes and some help?


On Thu, Jan 22, 2004 at 10:44:16AM -0700, Tom Rini wrote:
> On Wed, Jan 21, 2004 at 12:22:30PM -0700, Tom Rini wrote:
> > On Wed, Jan 21, 2004 at 12:21:28PM -0700, Tom Rini wrote:
> > > On Wed, Jan 21, 2004 at 11:42:17AM -0700, Tom Rini wrote:
> > > > On Wed, Jan 21, 2004 at 10:23:12PM +0530, Amit S. Kale wrote:
> > > > 
> > > > > Hi,
> > > > > 
> > > > > Here it is: ppc kgdb from timesys kernel is available at
> > > > > http://kgdb.sourceforge.net/kgdb-2/linux-2.6.1-kgdb-2.1.0.tar.bz2
> > > > > 
> > > > > This is my attempt at extracting kgdb from TimeSys kernel. It works well in 
> > > > > TimeSys kernel, so blame me if above patch doesn't work.
> > > > 
> > > > Okay, here's my first patch against this.
> > > 
> > > And dependant upon this is a patch to fixup the rest of the common PPC
> > > code, as follows:
> > 
> > And on top of all of that is the following, which allows KGDB to work on
> > the Motorola LoPEC.
> 
> On top of everything from yesterday, here's:

First up:
We need to call flush_instruction_cache() on a 'c' or 's' command.
 arch/ppc/kernel/ppc-stub.c |   19 ++++++-------------
 1 files changed, 6 insertions(+), 13 deletions(-)
--- 1.14/arch/ppc/kernel/ppc-stub.c	Thu Jan 22 10:41:58 2004
+++ edited/arch/ppc/kernel/ppc-stub.c	Thu Jan 22 10:49:30 2004
@@ -144,18 +144,6 @@
 	return;
 }				/* gdb_regs_to_regs */
 
-/* exit_handler:
- * 
- * This is called by the generic layer when it is about to return from 
- * the exception handler
- */
-void
-ppc_handler_exit(void)
-{
-//      flush_instruction_cache ();
-	return;
-}
-
 /*
  * This function does PoerPC specific procesing for interfacing to gdb.
  */
@@ -188,6 +176,12 @@
 		if (kgdb_hexToLong(&ptr, &addr))
 			linux_regs->nip = addr;
 
+/* Need to flush the instruction cache here, as we may have deposited a
+ * breakpoint, and the icache probably has no way of knowing that a data ref to
+ * some location may have changed something that is in the instruction cache.
+ */
+		flush_instruction_cache();
+
 		/* set the trace bit if we're stepping */
 		if (remcomInBuffer[0] == 's') {
 #if defined (CONFIG_4xx)
@@ -254,5 +248,4 @@
 	.sleeping_thread_to_gdb_regs = ppc_sleeping_thread_to_gdb_regs,
 	.gdb_regs_to_regs = ppc_gdb_regs_to_regs,
 	.handle_exception = ppc_handle_exception,
-	.handler_exit = ppc_handler_exit,
 };

-- 
Tom Rini
http://gate.crashing.org/~trini/
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo _at_ vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


この情報があなたの探していたものかどうか選択してください。
yes/まさにこれだ!   no/違うなぁ   part/一部見つかった   try/これで試してみる

あなたが探していた情報はどのようなことか、ご自由に記入下さい。特に「まさにこれだ!」と言う場合は記入をお願いします。
例:「複数のマシンからCATV経由でipmasqueradeを利用してWebを参照したい場合の設定について」
Follow-Ups: References: