Search the exception table with linear algorithm
PATCH 1/1 Search the exception table with linear algorithm
Search the exception table with linear algorithm instead of bisecting algorithm.
Because the exception table might be unsorted.
Signed-off-by Roy Zang <[email protected]>
--- lib_ppc/extable.c | 39 ++++++++++++++++++--------------------- 1 files changed, 18 insertions(+), 21 deletions(-)
lib_ppc/extable.c +18 -21
@@ -52,30 +52,27 @@ search_one_table(const struct exception_table_entry *first,const struct exception_table_entry *last, unsigned long value) { - while (first <= last) { -const struct exception_table_entry *mid; -long diff; - - mid = (last - first) /2 + first; -if ((ulong ) mid >CFG_MONITOR_BASE ) { -/* exception occurs in FLASH, before u-boot relocation. -* No relocation offset is needed. -*/ - diff = mid->insn - value; + long diff; +if ((ulong ) first >CFG_MONITOR_BASE ) { +/* exception occurs in FLASH, before u-boot relocation. +* No relocation offset is needed. +*/ +while (first <= last) { + diff = first->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; +return first->fixup; + first++; + } + }else { +/* exception occurs in RAM, after u-boot relocation. +* A relocation offset should be added. +*/ +while (first <= last) { + diff = (first->insn + gd->reloc_off) - value;if (diff ==0 ) -return (mid->fixup + gd->reloc_off); +return (first->fixup + gd->reloc_off); + first++; } -if (diff <0 ) - first = mid +1 ; -else - last = mid -1 ; }return 0 ; }
Signature · 1 line
1.5.1
PATCH 1/1 Search the exception table with linear algorithm
Quoted 3 lines · In message <[email protected]> you wrote:
Search the exception table with linear algorithm instead of bisecting algorithm.
Because the exception table might be unsorted.
Applied to u-boot-testing.
Thanks.
Best regards,
Wolfgang Denk
Signature · 5 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de Don't put off for tomorrow what you can do today, because if you enjoy it today you can do it again tomorrow.