All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zang Roy-r61911 <tie-fei.zang@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2 (Taiga) board	support
Date: 01 Dec 2006 16:09:27 +0800	[thread overview]
Message-ID: <1164960567.6742.25.camel@localhost.localdomain> (raw)
In-Reply-To: <20061127154901.CE3E7353B57@atlas.denx.de>

Dear Wolfgang

On Mon, 2006-11-27 at 23:49, Wolfgang Denk wrote:

> 
> 12) In lib_ppc/extable.c you add code with a "#ifdef
>     CFG_EXCEPTION_AFTER_RELOCATE; there is absolutely no explanation
>     nor comment anywhere why you think this is necessary.
> 

I do not think the search_one_table()function can deal with all the
exception conditions.The original code can only processes the search for
the exception occurring in FLASH/ROM, because the exception and fixup
table usually locate in FLASH. If the exception address is also in
FLASH, it will be OK.

If the exception occurs in RAM, after the u-boot relocation, a
relocation offset should be added.

I am sadly to see that there is no other ppc board encountering the
exception in RAM phase. While for mpc7448hpc2 board, tsi108 pci config
read will generate such kind of exception.

After consideration , I do not think provide 
CFG_EXCEPTION_AFTER_RELOCATE is a good option :-). I change it to the
following code. How do you think?
If it is OK, I will provide it with all the mpc7448hpc2 board support
code.
Thanks.
Roy

diff --git a/lib_ppc/extable.c b/lib_ppc/extable.c
index d92f142..8a4d141 100644
--- a/lib_ppc/extable.c
+++ b/lib_ppc/extable.c
@@ -50,15 +50,29 @@ search_one_table(const struct exception_
 		 const struct exception_table_entry *last,
 		 unsigned long value)
 {
+	DECLARE_GLOBAL_DATA_PTR;
+
 	while (first <= last) {
 		const struct exception_table_entry *mid;
 		long diff;
 
 		mid = (last - first) / 2 + first;
-		diff = mid->insn - value;
-		if (diff == 0)
-			return mid->fixup;
-		else if (diff < 0)
+		if (mid > CFG_MONITOR_BASE) { 
+		/* exception occurs in FLASH, before u-boot relocation.
+		 * No relocation offset is needed. 
+		 */
+			diff = mid->insn - value;
+			if (diff == 0)
+				return mid->fixup;
+		} else {
+		/* exception occurs in RAM, after u-boot relocation. 
+		 * A relocation offset should be added.
+		 */
+			diff = (mid->insn + gd->reloc_off) - value;
+			if (diff == 0)
+				return (mid->fixup + gd->reloc_off);
+		}
+		if (diff < 0)
 			first = mid+1;
 		else
 			last = mid-1;

  parent reply	other threads:[~2006-12-01  8:09 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-11 10:44 [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2 (Taiga) board support Zang Roy-r61911
2006-10-30  7:11 ` [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2 (Taiga) boardsupport Zang Roy-r61911
2006-10-30  9:01   ` Wolfgang Denk
2006-10-30  9:23     ` Zang Roy-r61911
2006-11-03  4:54     ` Zang Roy-r61911
2006-11-07  2:32       ` [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2(Taiga) board support Zang Roy-r61911
2006-11-13  4:02       ` [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2 (Taiga) boardsupport Zang Roy-r61911
2006-11-13  6:12         ` Jaksa David
2006-11-13  6:36           ` Zang Roy-r61911
2006-11-27  2:12           ` [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2 (Taiga) board support Zang Roy-r61911
2006-11-27 15:49             ` Wolfgang Denk
2006-11-28  1:51               ` Zang Roy-r61911
2006-12-01  2:31               ` Zang Roy-r61911
2006-12-01  8:59                 ` Wolfgang Denk
2006-12-01 11:23                   ` Zang Roy-r61911
2006-12-01  8:09               ` Zang Roy-r61911 [this message]
2006-12-01 14:31                 ` Wolfgang Denk
2006-12-04  2:04                   ` Zang Roy-r61911
2006-12-05  2:31               ` Zang Roy-r61911
2006-12-06  5:32                 ` Jaksa David
2006-12-08 15:51                 ` Zang Roy-r61911
2006-12-14  4:50                   ` Zang Roy-r61911
2006-12-20  2:25                     ` Jaksa David
2006-12-22  8:36               ` Zang Roy-r61911
2006-12-22 10:02                 ` Wolfgang Denk
2006-12-23 11:59                   ` Zang Roy-r61911
2007-01-08  2:13                   ` Zang Roy-r61911
2007-01-15  2:43                   ` Zang Roy-r61911
2007-01-15 21:21                     ` Wolfgang Denk
2007-01-23  1:58                       ` Zang Roy-r61911
2007-01-29  1:50                       ` Zang Roy-r61911
2007-02-12  3:24                       ` Zang Roy-r61911
2007-03-08 10:45                         ` Wolfgang Denk
2007-03-09  2:03                           ` Zang Roy-r61911
2007-03-09  7:40                             ` Wolfgang Denk
2007-04-06  1:22                           ` Zang Roy-r61911
2007-04-11 23:25                           ` Zang Roy-r61911
2007-04-18 15:33                             ` Wolfgang Denk
2007-04-18 23:44                               ` Zang Roy-r61911
2006-11-02  9:27 ` [U-Boot-Users] [PATCH 00/10 v3]: " Zang Roy-r61911
2006-11-08  8:10 [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2(Taiga)board support Ch.Vict
2006-11-08  8:31 ` Zang Roy-r61911
2006-11-08  8:53   ` Ch.Vict
2006-11-10  7:37     ` Ch.Vict
2006-11-10  7:45       ` [U-Boot-Users] [PATCH 00/07 v2]: Add mpc7448hpc2(Taiga) board support Zang Roy-r61911

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1164960567.6742.25.camel@localhost.localdomain \
    --to=tie-fei.zang@freescale.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.