Subject: port-arm26/14811: eh and other drivers that use podloader don't work
To: None <>
From: None <>
List: netbsd-bugs
Date: 12/02/2001 09:47:06
>Number:         14811
>Category:       port-arm26
>Synopsis:       eh and other drivers that use podloader don't work
>Confidential:   no
>Severity:       critical
>Priority:       high
>Responsible:    port-arm26-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Dec 02 09:48:00 PST 2001
>Originator:     Gavan Fantom
>Release:        -current
Not booted multi-user yet, but based on -current sources from 2 days ago
Drivers using podloader don't work, leading to a panic in podloader_call. Every byte read from the podule is returned as 'ef', an obviously incorrect value.

The problem lies in the code that wraps the call to the podule loader, which inadvertantly overwrites the return value from the podule loader immediately after its return.
Install an i-cubed Etherlan card in an Archimedes and boot an arm26 kernel with the eh driver compiled in. The kernel will find eh0 and then hang for a while. A panic follows in podloader_call.
RCS file: /cvsroot/syssrc/sys/arch/arm26/podulebus/podloader_asm.S,v
retrieving revision 1.2
diff -r1.2 podloader_asm.S
>       mov     r2, r0
>       mov     r0, r2