[U-Boot-Users] data abort happens in cleanup_before_linux()

Shawn shawnxjin at gmail.com
Wed Nov 10 02:40:10 CET 2004


Hi,

I'm porting u-boot to ARM IntegratorCP platform with ARM946E core
module on top of it. I thought the porting was successful. However
when I try to load a uclinux kernel image, a data abort happens after
cleanup_before_linux() is called in do_bootm_linux(). The cleanup
function is just to disable I/D-cashe and flush D-cache.

I checked the tag list *params and the board info *bd before
cleanup_before_linux() is called. The tag list doesn't seems to be
built correctly.

What would cause a data abort trap when disabling I/D-cache? Why does
the tag list look like so strange?

Any hints are warmly appreciated.

(gdb) print *params
$4 = {hdr = {size = 0x55550415, tag = 0x55555555}, u = {core = {flags
= 0x55555055, pagesize = 0x55555055, rootdev = 0x55555040}, mem =
{size = 0x55555055, start = 0x55555055}, videotext = {x = 0x55, y =
0x50, video_page = 0x5555, video_mode = 0x55, video_cols = 0x50,
video_ega_bx = 0x5555, video_lines = 0x40, video_isvga = 0x50,
video_points = 0x5555}, ramdisk = {flags = 0x55555055, size =
0x55555055, start = 0x55555040}, initrd = { start = 0x55555055, size =
0x55555055}, serialnr = {low = 0x55555055, high = 0x55555055},
    revision = {rev = 0x55555055}, videolfb = {lfb_width = 0x5055,
lfb_height = 0x5555, lfb_depth = 0x5055, lfb_linelength = 0x5555,
lfb_base = 0x55555040, lfb_size = 0x55555044, red_size = 0x40, red_pos
= 0x50, green_size = 0x55, green_pos = 0x55, blue_size = 0x0, blue_pos
= 0x0, rsvd_size = 0x55, rsvd_pos = 0x55}, cmdline = {cmdline = "U"},
acorn = { memc_control_reg = 0x55555055, vram_pages = 0x55555055,
sounddefault = 0x40, adfsdrives = 0x50}, memclk = {fmemclk =
0x55555055}}}
(gdb) print *bd
$5 = {bi_baudrate = 0x9600, bi_ip_addr = 0xf0551b82, bi_enetaddr =
"\000\002�000\fb", bi_env = 0x0, bi_arch_number = 0x113,
bi_boot_params = 0x100, bi_dram = {{start = 0x0, size = 0x8000000}}}

-Shawn.




More information about the U-Boot mailing list