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;
next prev 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.