I've seen the case where the second CPU did not start on a Broadcom 1250 running a 64-bit kernel, but I don't know if anyone has a good solution. I just rigged the values in the Linux kernel so that it knows about the second CPU. It's a godawful hack, but I needed something quick at the time. Personally, I am not a fan of CFE and would love to know if there's a better way to bootstrap. --- Kaz Kylheku <kaz@xxxxxxxxxxxxxxxxx> wrote: > Anyone seen a problem like this? cfe_cpu_start() > works fine on a > 32 bit kernel, but not on 64. > > I added a function to cfe/smp.c: > > static asmlinkage void dummy() > { > prom_printf("dummy called\n"); > } > > This serves as the simplest possible "hello world". > > If I substitute this for the function passed to > cfe_cpu_start(), > on a 32 bit kernel, the slave CPU calls the function > and the > message is printed on the serial console. > > On a 64 bit kernel, the function is never reached. > The API call returns, > but the > secondary CPU never calls in. > > The sign-extension of the address looks good. The > function pointer looks > like > FFFFFFFF8XXXXXXX. This is cast to long before being > assigned into the > right field > of the CFE request structure, where it is converted > to 64 bit unsigned. > > Inside CFE, the CPU is just looping around waiting > for the address to > call with > a direct jump. > > So it's a puzzling problem. > > > > > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com