what is the purpose of the following LE->BE patch to arch/mips/include/asm/io.h?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



  was recently handed a MIPS-based dev board (can't name the vendor,
NDA) that *typically* runs in LE mode but, because of a proprietary
binary that must be run on the board and was compiled as BE, has to be
run in BE mode.

  the vendor supplied a yoctoproject layer that seems to work fine
but, in changing the DEFAULTTUNE to big-endian, the following patch
had to be applied to the 3.14 kernel tree to the file
arch/mips/include/asm/io.h in order to get output from the console
port as the system was booting:

326c326,333
< 		*__mem = __val;						\
---
> 	{										\
> 		if (sizeof(type) == sizeof(u32))		\
> 		{									\
> 			*__mem = __cpu_to_le32(__val);	\
> 		}									\
> 		else								\
> 			*__mem = __val;						\
> 	}											\
356a364
> 	{										\
357a366,368
> 		if (sizeof(type) == sizeof(u32))	\
> 			__val = __cpu_to_le32(__val);	\
> 	}											\

  without that patch, the initial conclusion was that the board was
just hanging at boot, but i was told, no, it was booting, there was
just no output at the console port. applied the patch and, voila.

  can someone explain *precisely* what the above is doing? i am by no
means a MIPS expert, but clearly the above is doing some sort of
explicit BE/LE conversion. can anyone supply more detail? thanks.

rday

-- 

========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux