Trace info:
0c284784 [0xeafffff8] b 0xc28476c ; (platform_notify + 0x1a56ac)
0c284788 [0xeafffff0] b 0xc284750 ; (platform_notify + 0x1a5690)
0c28478c [0xe1a0c00d] mov r12,r13
0c284790 [0xe92dd810] stmfd r13!,{r4,r11,r12,r14,pc}
0c284794 [0xe24cb004] sub r11,r12,#4
0c284798 [0xef900036] swi 0x900036 <--------- point
0c28479c [0xe3700a01] cmn r0,#0x1000
0c2847a0 [0xe1a04000] mov r4,r0
0c2847a4 [0x8a000001] bhi 0xc2847b0 ; (platform_notify + 0x1a56f0)
0c2847a8 [0xe1a00004] mov r0,r4
0c2847ac [0xe89da810] ldmia r13,{r4,r11,r13,pc}
0c2847b0 [0xebfff953] bl 0xc282d04 ; (platform_notify + 0x1a3c44)
2007/3/21, Du Thomas <[EMAIL PROTECTED]>:
The output message:
Linux version 2.6.17-uc1[DT0.8] ([EMAIL PROTECTED]) (gcc version
3.4.0) #556 PREEMPT Thu Feb 15 05:23:31 CST 2007
CPU: Samsung-S3C44B0x [44b07700]
Machine: S3C44B0X Development Board
CPU0: D VIVT write-through cache
CPU0: cache: 512 bytes, associativity 1, 8 byte lines, 64 sets
Built 1 zonelists
Kernel command line: root=/dev/ram0 initrd=0x0c300000,800k keepinitrd
PID hash table entries: 64 (order: 6, 256 bytes)
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 8MB = 8MB total
Memory: 6448KB available (652K code, 140K data, 60K init)
Mount-cache hash table entries: 512
checking if image is initramfs...it isn't (bad gzip magic numbers);
looks like an initrd, initrd_start=0xc300000, initrd_size=819200
ttyS0 at I/O 0x1d00000 (irq = 3) is a Samsung S3C44B0 Internal UART
ttyS1 at I/O 0x1d04000 (irq = 2) is a Samsung S3C44B0 Internal UART
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
RAMDISK driver initialized: 2 RAM disks of 800K size 1024 blocksize
loop: loaded (max 8 devices)
RAMDISK: romfs filesystem found at block 0
RAMDISK: Loading 137KiB [1 disk] into ram disk... done.
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 60K
console init ready.
Star run init process!
do_execve(...) @ fs/exec.c:01222 exec /sbin/init successfully !
.
execve(...) @ arch/arm/kernel/sys_arm.c:00312 execve asm BEGIN
.
2007/3/21, Du Thomas <[EMAIL PROTECTED]>:
The output message:
Linux version 2.6.17-uc1[DT0.8] ([EMAIL PROTECTED]) (gcc version
3.4.0) #556 PREEMPT Thu Feb 15 05:23:31 CST 2007
CPU: Samsung-S3C44B0x [44b07700]
Machine: S3C44B0X Development Board
CPU0: D VIVT write-through cache
CPU0: cache: 512 bytes, associativity 1, 8 byte lines, 64 sets
Built 1 zonelists
Kernel command line: root=/dev/ram0 initrd=0x0c300000,800k keepinitrd
PID hash table entries: 64 (order: 6, 256 bytes)
Dentry cache hash table entries: 1024 (order: 0, 4096 bytes)
Inode-cache hash table entries: 1024 (order: 0, 4096 bytes)
Memory: 8MB = 8MB total
Memory: 6448KB available (652K code, 140K data, 60K init)
Mount-cache hash table entries: 512
checking if image is initramfs...it isn't (bad gzip magic numbers);
looks like an initrd, initrd_start=0xc300000, initrd_size=819200
ttyS0 at I/O 0x1d00000 (irq = 3) is a Samsung S3C44B0 Internal UART
ttyS1 at I/O 0x1d04000 (irq = 2) is a Samsung S3C44B0 Internal UART
NetWinder Floating Point Emulator V0.97 (double precision)
io scheduler noop registered
io scheduler deadline registered (default)
io scheduler cfq registered
RAMDISK driver initialized: 2 RAM disks of 800K size 1024 blocksize
loop: loaded (max 8 devices)
RAMDISK: romfs filesystem found at block 0
RAMDISK: Loading 137KiB [1 disk] into ram disk... done.
VFS: Mounted root (romfs filesystem) readonly.
Freeing init memory: 60K
console init ready.
Star run init process!
do_execve(...) @ fs/exec.c:01222 exec /sbin/init successfully !
.
execve(...) @ arch/arm/kernel/sys_arm.c:00312 execve asm BEGIN
.
2007/3/21, Du Thomas <[EMAIL PROTECTED]>:
>
> I port uClinux 2.6.17-uc1 to S3C44B0X[NOMMU, NOFP] for a long times,
> tools chain downloaded arm-elf-tools-20040427.sh from
> http://opensrc.sec.samsung.com/
<http://opensrc.sec.samsung.com/%C2%A0>(arm-elf-gcc
> 3.4.0 ), the uClinux just can execute to the
>
> linux-2.6.x/init/main.c's
>
> run_init_process("/sbin/init");
>
> there are some problems when run to linux-2.6.x/arch/arm/kernel/Sys_arm.c's
> function: execve
>
> =============================================================
> long execve(const char *filename, char **argv, char **envp)
> {
> struct pt_regs regs;
> int ret;
>
> memset(®s, 0, sizeof(struct pt_regs));
> ret = do_execve((char *)filename, (char __user * __user *)argv,
> (char __user * __user *)envp, ®s);
> if (ret < 0)
> goto out;
>
> /*
> * Save argc to the register structure for userspace.
> */
> regs.ARM_r0 = ret;
> /*
> * We were successful. We won't be returning to our caller, but
> * instead to user space by manipulating the kernel stack.
> */
>
> //--------------------------- hell begin --------------------
> asm( "add r0, %0, %1\n\t"
> "mov r1, %2\n\t"
> "mov r2, %3\n\t"
> "bl memmove\n\t" /* copy regs to top of stack */
> "mov r8, #0\n\t" /* not a syscall */
> "mov r9, %0\n\t" /* thread structure */
> "mov sp, r0\n\t" /* reposition stack pointer */
> "b ret_to_user"
> :
> : "r" (current_thread_info()),
> "Ir" (THREAD_START_SP - sizeof(regs)),
> "r" (®s),
> "Ir" (sizeof(regs))
> : "r0", "r1", "r2", "r3", "ip", "lr", "memory");
> out:
> return ret;
> }
> ==================================================================
>
> I trace to:
> b ret_to_user
> and pass a lots, there be:
> swi 0x900036
>
> what's the hell?
>
> uClinux like fall into a death cycle, it make me crazy!
> Is there anybody have some idea?
>
> THX !!!!!
>
>
_______________________________________________
uClinux-dev mailing list
[email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected]
To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev