| To: | Guenter Roeck <guenter.roeck@ericsson.com> |
|---|---|
| Subject: | Re: [PATCH v2] Virtual memory size detection for 64 bit MIPS CPUs |
| From: | "Maciej W. Rozycki" <macro@linux-mips.org> |
| Date: | Mon, 1 Feb 2010 22:39:03 +0000 (GMT) |
| Cc: | David Daney <ddaney@caviumnetworks.com>, "linux-mips@linux-mips.org" <linux-mips@linux-mips.org> |
| In-reply-to: | <1265061872.5825.71.camel@groeck-laptop> |
| Original-recipient: | rfc822;linux-mips@linux-mips.org |
| References: | <1265058019-21484-1-git-send-email-guenter.roeck@ericsson.com> <4B674ADD.1050306@caviumnetworks.com> <1265061872.5825.71.camel@groeck-laptop> |
| Sender: | linux-mips-bounce@linux-mips.org |
| User-agent: | Alpine 2.00 (LFD 1167 2008-08-23) |
On Mon, 1 Feb 2010, Guenter Roeck wrote:
> On Mon, 2010-02-01 at 16:42 -0500, David Daney wrote:
> > Guenter Roeck wrote:
> > [...]
> > >
> > > +static inline void cpu_set_vmbits(struct cpuinfo_mips *c)
> > > +{
> > > + if (cpu_has_64bits) {
> > > + unsigned long zbits;
> > > +
> > > + asm volatile(".set mips64\n"
> > > + "and %0, 0\n"
> > > + "dsubu %0, 1\n"
> > > + "dmtc0 %0, $10, 0\n"
> > > + "dmfc0 %0, $10, 0\n"
> > > + "dsll %0, %0, 2\n"
> > > + "dsra %0, %0, 2\n"
> > > + "dclz %0, %0\n"
> > > + ".set mips0\n"
> > > + : "=r" (zbits));
> > > + c->vmbits = 64 - zbits;
> > > + } else
> > > + c->vmbits = 32;
> > > +}
> > > +
> >
> > It should be possible to express this in 'pure' C using
> > read_c0_entryhi()/write_c0_entryhi(), also you need to be sure you are
>
> Sure, no problem.
Especially as:
1. DCLZ is not a valid MIPS III instruction; some 64-bit CPUs will fault
on it.
2. You have to take care of CP0 hazards, e.g. with the R4000 if an MTC0 is
immediately followed by an MFC0 accessing the same CP0 register, then
the result of the latter instruction is unpredictable.
Maciej
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH 2/2] bcm63xx_uart: allow more than one uart to be registered., Greg KH |
|---|---|
| Next by Date: | [PATCH v3] Virtual memory size detection for 64 bit MIPS CPUs, Guenter Roeck |
| Previous by Thread: | Re: [PATCH v2] Virtual memory size detection for 64 bit MIPS CPUs, Guenter Roeck |
| Next by Thread: | Re: [PATCH 2/2] bcm63xx_uart: allow more than one uart to be registered., Greg KH |
| Indexes: | [Date] [Thread] [Top] [All Lists] |