From: Shinya Kuribayashi <skuribay@ruby.dti.ne.jp>
To: "Kevin D. Kissell" <kevink@paralogos.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>,
ralf@linux-mips.org, ths@networkno.de, linux-mips@linux-mips.org,
michael@free-electrons.com, vlad.lungu@windriver.com
Subject: Re: [PATCH 1/1] mips: clear IV bit in CP0 cause if the CPU doesn't support divec
Date: Thu, 11 Sep 2008 00:28:58 +0900 [thread overview]
Message-ID: <48C7E7BA.2040600@ruby.dti.ne.jp> (raw)
In-Reply-To: <48C7AB71.8090106@paralogos.com>
Kevin D. Kissell wrote:
> I think it's important to know whether it's U-Boot or Linux that's confused.
> As Thomas Bogendoerfer pointed out, it's not good practice to flip bits whose
> use is unknown to the kernel. If in fact the CPU in question does support IV,
> was correctly identified as such by U-Boot, but isn't recognized by the MIPS
> Linux kernel, then we ought to fix Linux to recognize the CPU. If it doesn't
> support IV, but U-Boot thought it did, then U-Boot is broken and ought to
> be fixed. If you you're stuck with a broken U-Boot for some reason, then
> there ought to be some platform-specific place to put a hack.
It seems the culprit is U-Boot/MIPS `qemu-mips' target. It apparently
sets IV bit in its local initialization.
u-boot/board/qemu-mips/lowlevel_init.S
---------------------------------------
http://git.denx.de/?p=u-boot.git;a=blob;f=board/qemu-mips/lowlevel_init.S;hb=HEAD
/* Memory sub-system initialization code */
#include <config.h>
#include <asm/regdef.h>
#include <asm/mipsregs.h>
.text
.set noreorder
.set mips32
.globl lowlevel_init
lowlevel_init:
/*
* Step 2) Establish Status Register
* (set BEV, clear ERL, clear EXL, clear IE)
*/
li t1, 0x00400000
mtc0 t1, CP0_STATUS
/*
* Step 3) Establish CP0 Config0
* (set K0=3)
*/
li t1, 0x00000003
mtc0 t1, CP0_CONFIG
/*
* Step 7) Establish Cause
* (set IV bit)
*/
li t1, 0x00800000
mtc0 t1, CP0_CAUSE
/* Establish Wired (and Random) */
mtc0 zero, CP0_WIRED
nop
jr ra
nop
--->8--->8--->8--->8---
On the other hand, a normal U-Boot/MIPS startup routine doesn't set any
CP0.CAUSE bits; it just clears all bits right after system reset.
u-boot/cpu/mips/start.S
------------------------
http://git.denx.de/?p=u-boot.git;a=blob;f=cpu/mips/start.S;hb=HEAD
(snipped)
/* Clear watch registers.
*/
mtc0 zero, CP0_WATCHLO
mtc0 zero, CP0_WATCHHI
/* WP(Watch Pending), SW0/1 should be cleared. */
mtc0 zero, CP0_CAUSE
setup_c0_status_reset
/* Init Timer */
mtc0 zero, CP0_COUNT
mtc0 zero, CP0_COMPARE
(snipped)
So this issue only happens on U-Boot/MIPS `qemu-mips' target, I think.
Shinya
prev parent reply other threads:[~2008-09-10 15:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-09 8:15 [PATCH 1/1] mips: clear IV bit in CP0 cause if the CPU doesn't support divec Thomas Petazzoni
2008-09-10 8:31 ` Thomas Bogendoerfer
2008-09-10 11:11 ` Kevin D. Kissell
2008-09-10 11:50 ` Ralf Baechle
2008-09-10 15:28 ` Shinya Kuribayashi [this message]
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=48C7E7BA.2040600@ruby.dti.ne.jp \
--to=skuribay@ruby.dti.ne.jp \
--cc=kevink@paralogos.com \
--cc=linux-mips@linux-mips.org \
--cc=michael@free-electrons.com \
--cc=ralf@linux-mips.org \
--cc=thomas.petazzoni@free-electrons.com \
--cc=ths@networkno.de \
--cc=vlad.lungu@windriver.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox