Problems of using APU/FPU under linux

Shanyuan Gao sygao.research at
Tue Apr 15 02:18:07 EST 2008


Recently I was trying to make APU/FPU working under Linux on Xilinx  
ML410. The standalone programs work perfectly. However under Linux,  
when I try to use a floating point operation, like *fmuls*, it will  
give me a *trap*.

By studying the user guide from Xilinx and dumping the object files,  
I know I need to change the corresponding bits (APU enable, FP  
enable, maybe APU Exception enable) in Machine State Register. I  
guess I need to enable the bits whenever before the kernel uses  
*mtmsr*. However, it doesn't work. I got the same trap with the same  
MSR, as I had no APU/FPU before. I also tried to add the FPU.S to ppc  
tree, but it doesn't work either.

The questions are
1. I guess there might be some place that changed MSR after all my  
changes. But I don't know where. And can I write a kernel module to  
change the MSR after booting in Linux? (well, it's hard for me though)

2. Does it have any exception/interrupt mechanism to direct FP  
operation to APU/FPU? Or after enabling APU/FPU it will mask the  
exception/interrupt and decode FP operation by itself?

Any ideas are appreciated. Thank you very much!


More information about the Linuxppc-embedded mailing list