[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-arm-kernel
Subject: Re: Kernel hangs after "Memory policy: ECC disabled,
From: "Paul Chitescu" <Paul.Chitescu () IMC-Group ! org>
Date: 2004-04-01 8:55:20
Message-ID: 004f01c417c7$1052a940$e7b9e6c1 () s40 ! icpe ! ro
[Download RAW message or body]
"Michael Burian" <dynmail1@gassner-waagen.at> wrote:
> I try to get linux-2.6.0-rmk2 running on the EDB9312 board
>
> To be able to trace anything at all I've ported the printascii hack to
> EP93xx and used it in printk.
> RedBoot docs told me that physical as well as virtual adress range for
> IO registers is 0x80000000
> for that board so i used this unconditionally in .macro addruart. [0]
>
> I tried printascii before and after mmu was turned on, and although it
> hanged in either case the
> stuff was printed to the serial - I guess mmu code did not like the
> corrupted regs.
> Calling it from printk seems to work fine.
> [...]
I am working on a board with EP9312 too so I may share some knowledge from
the 2.4 kernel series - we can't afford moving from a relatively stable 2.4
to a totally unsupported 2.6 yet.
That's an error in the Cirrus supplied init macros for all their boards. The
virtual address of the CPU internal ports with the MMU enabled should be
0xE0000000. The value they placed there - 0x80000000 - is not valid as the
ARM kernel should not map them in the first 3GB of virtual memory.
----------------------------------------------------------------------------
----
#elif defined(CONFIG_ARCH_EP9312)
.macro addruart,rx
mrc p15, 0, \rx, c1, c0
tst \rx, #1 @ MMU enabled?
ldreq \rx, =IO_BASE_PHYS @ System peripherals
(phys address)
ldrne \rx, =IO_BASE_VIRT @ System peripherals
(virt address)
orr \rx,\rx,#0x008c0000 @ Advance to
UART1Base
@ We probe for the active serial port here.
@ We assume r1 can be clobbered.
@ see if UART1 is active
ldr r1, [\rx, #0x14] @UART1Ctrl
tst r1, #1
@ if UART1 is inactive advance to UART2
addeq \rx, \rx, #0x00010000
ldreq r1, [\rx, #0x14] @UART2Ctrl
tsteq r1, #1
@ if UART2 is inactive advance to UART3
addeq \rx, \rx, #0x00010000
ldreq r1, [\rx, #0x14] @UART3Ctrl
tsteq r1, #1
@ if all ports are inactive, then there is nothing we can do
moveq pc, lr
.endm
.macro senduart,rd,rx
strb \rd, [\rx] @ UARTxData
.endm
.macro waituart,rd,rx
1001: ldr \rd, [\rx, #0x18] @ UARTxFlag
tst \rd, #0x20 @ TXFF = 0 when ok
to transmit
bne 1001b
.endm
.macro busyuart,rd,rx
1001: ldr \rd, [\rx, #0x18] @ UARTxFlag
tst \rd, #0x08 @ BUSY = 1 while
transmitting
bne 1001b
.endm
----------------------------------------------------------------------------
----
Paul Chitescu
-------------------------------------------------------------------
Subscription options: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm-kernel
FAQ/Etiquette: http://www.arm.linux.org.uk/armlinux/mailinglists.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic