Waligora
22 years ago
Hello,
Does anybody successfully run kernel 2.4.x (latest copy from CVS) with 68EZ328, or any other 68000 processor?
I have found one more bug in 68328/entry.S file
actual:
do_trace:
....
/* jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0) */
lsl #2,%d1
#if 1
lea SYMBOL_NAME(sys_call_table), %a0
jbsr %a0@(%d1)
#else
should be:
do_trace:
....
/* jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0) */
lsl #2,%d1
#if 1
lea SYMBOL_NAME(sys_call_table), %a0
movel %a0@(%d1), %a0
jbsr %a0@
#else
Anyway, my system still have problems when tries to create a first INIT kernel_thread. I use 68000 processor with
timer (10 ms tick, jiffies=76), uart 115200. It is quite similar to 68328 platform.
Short screen log is below:
-------------------------
Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
KERNEL -> TEXT=0x020000-0x0abf00 DATA=0x0abf00-0x0c4064 BSS=0x0c4064-0x0d53ac
KERNEL -> ROMFS=0x0d53ac-0x125c9c MEM=0x126000-0x400000 STACK=0x400000-0x400000
Command line: 'root=/dev/ram0 console=/dev/ttyS0'
bdata->
node_bootmem_map=1204224
node_boostart=0
node_low_pfn=1024
start_mem is 0x126000
virtual_end is 0x400000
On node 0 totalpages: 1024
zone(0): 0 pages.
zone(1): 1024 pages.
zone(2): 0 pages.
Done setup_arch
Kernel command line: root=/dev/ram0 console=/dev/ttyS0
Calibrating delay loop... 1.40 BogoMIPS
Mem_init: start=126000, end=400000
Memory available: 2860k/4096k RAM, 0k/0k ROM (559k kernel code, 165k data)
Dentry cache hash table entries: 512 (order: 0, 4096 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 1024 (order: 0, 4096 bytes)
POSIX conformance testing by UNIFIX
^^^^^^^^^^^^^^^^^^^^^^^^^^
after this print system crashes
-------------------------
Below is some trace-back from my system (I'm not uCLinux expert :), so
apologize for any obvious stuff)
I did some tracing and found that switching from IDLE task to NEW TASK
returns to 0x00000 address. I think that NEW TASK should be INIT process in this case.
The following steps are executed prior crash (after "POSIX conformance testing by UNIFIX" printf).
rest_init()
...
kernel_thread(init,NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNALS)
...
do_fork()
...
wake_up_process()
[fork.c(~890)] wait_for_completion(&vfork)
... this goes to
schedue();
...
[sched.c(~600)] del_from_runqueue(prev)
[sched.c(~686)] prepare_to_switch()
[sched.c(~719)] switch_to(prev,next,prev)
[entry.S(~319)] resume
[entry.S(~100)] ret_from_fork
[sched.c(~530)] schedule_tail
[entry.S(~163)] ret_from_exception goes to 0x00000
Please let me know if data flow above is correct. What could be the most possible reason of such behavior?
Thanks in advance for any hints/suggestions.
Waligora.
Does anybody successfully run kernel 2.4.x (latest copy from CVS) with 68EZ328, or any other 68000 processor?
I have found one more bug in 68328/entry.S file
actual:
do_trace:
....
/* jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0) */
lsl #2,%d1
#if 1
lea SYMBOL_NAME(sys_call_table), %a0
jbsr %a0@(%d1)
#else
should be:
do_trace:
....
/* jbsr @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0) */
lsl #2,%d1
#if 1
lea SYMBOL_NAME(sys_call_table), %a0
movel %a0@(%d1), %a0
jbsr %a0@
#else
Anyway, my system still have problems when tries to create a first INIT kernel_thread. I use 68000 processor with
timer (10 ms tick, jiffies=76), uart 115200. It is quite similar to 68328 platform.
Short screen log is below:
-------------------------
Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne
KERNEL -> TEXT=0x020000-0x0abf00 DATA=0x0abf00-0x0c4064 BSS=0x0c4064-0x0d53ac
KERNEL -> ROMFS=0x0d53ac-0x125c9c MEM=0x126000-0x400000 STACK=0x400000-0x400000
Command line: 'root=/dev/ram0 console=/dev/ttyS0'
bdata->
node_bootmem_map=1204224
node_boostart=0
node_low_pfn=1024
start_mem is 0x126000
virtual_end is 0x400000
On node 0 totalpages: 1024
zone(0): 0 pages.
zone(1): 1024 pages.
zone(2): 0 pages.
Done setup_arch
Kernel command line: root=/dev/ram0 console=/dev/ttyS0
Calibrating delay loop... 1.40 BogoMIPS
Mem_init: start=126000, end=400000
Memory available: 2860k/4096k RAM, 0k/0k ROM (559k kernel code, 165k data)
Dentry cache hash table entries: 512 (order: 0, 4096 bytes)
Inode cache hash table entries: 512 (order: 0, 4096 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 1024 (order: 0, 4096 bytes)
POSIX conformance testing by UNIFIX
^^^^^^^^^^^^^^^^^^^^^^^^^^
after this print system crashes
-------------------------
Below is some trace-back from my system (I'm not uCLinux expert :), so
apologize for any obvious stuff)
I did some tracing and found that switching from IDLE task to NEW TASK
returns to 0x00000 address. I think that NEW TASK should be INIT process in this case.
The following steps are executed prior crash (after "POSIX conformance testing by UNIFIX" printf).
rest_init()
...
kernel_thread(init,NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNALS)
...
do_fork()
...
wake_up_process()
[fork.c(~890)] wait_for_completion(&vfork)
... this goes to
schedue();
...
[sched.c(~600)] del_from_runqueue(prev)
[sched.c(~686)] prepare_to_switch()
[sched.c(~719)] switch_to(prev,next,prev)
[entry.S(~319)] resume
[entry.S(~100)] ret_from_fork
[sched.c(~530)] schedule_tail
[entry.S(~163)] ret_from_exception goes to 0x00000
Please let me know if data flow above is correct. What could be the most possible reason of such behavior?
Thanks in advance for any hints/suggestions.
Waligora.