All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Robert P. J. Day" <rpjday@crashcourse.ca>
To: linux-mips@linux-mips.org
Subject: what is the purpose of the following LE->BE patch to arch/mips/include/asm/io.h?
Date: Fri, 20 Feb 2015 04:53:42 -0500 (EST)	[thread overview]
Message-ID: <alpine.LFD.2.11.1502200445290.26212@localhost> (raw)


  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
========================================================================

             reply	other threads:[~2015-02-20  9:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-20  9:53 Robert P. J. Day [this message]
2015-02-21  4:00 ` what is the purpose of the following LE->BE patch to arch/mips/include/asm/io.h? Matt Turner
2015-02-21  4:04   ` Matt Turner
2015-02-21  8:11     ` Robert P. J. Day
2015-02-21  8:23       ` Manuel Lauss
2015-02-21  8:27         ` Robert P. J. Day
2015-02-21 20:00           ` Maciej W. Rozycki
2015-02-21 21:03 ` Kevin Cernekee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.11.1502200445290.26212@localhost \
    --to=rpjday@crashcourse.ca \
    --cc=linux-mips@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.