I'm currently preparing to check the existing wireless drivers and cardbus
0.2 on SPARC, among others to bring the ath(7D) driver to SPARC as discussed
here:

        http://www.opensolaris.org/jive/thread.jspa?messageID=18945&#18945

Doing so on O/N 20060327, I ran into a couple of problems:

* cardbus 0.2:

  Here's where by far most of the problems lie:

  I had to discover which build the modified files were based on: some of
  them contained versions considerably older than current O/N.

  It seems like I had to discard the changed versions of
  common/pcmcia/cis/cis_handlers.c, common/pcmcia/cs/cs.c, and
  common/pcmcia/sys/cis.h, while merging changes to
  common/pcmcia/nexus/pcmcia.c.

  Apart from that, there are some inconsistencies:

  * -I$(UTSBASE)/sun4u seems completely wrong in i86pc/{cardbus,
    pcic}/Makefile, but necessary to find a couple of PCI headers
    (<sys/pci/pci_types.h>, <sys/pci/pci_nexus.h>, <sys/pci/pci_regs.h>,
    <sys/pci/pci_iommu.h>), these files probably need to move to common.

  * ddi_{put, get}{l, b} are only in <sys/ddi_obsolete.h> and have to be
    replaced by ddi_{put, get}{32, 8} instead.

  * dnode_t has been replaced by pnode_t.

  * It seems strange that the x86 files reside in i86pc/{cardbus, pcic},
    while the sparc ones are in sparc/{cardbus, pcic}.  Either the code is
    only isa-dependent, in which case the x86 code belongs into intel, or
    it is implarch dependent, which would mean the sparc code should go
    into sun4[uv].  I've found this inconsistency in many cases, with no
    clear indication why a given driver lived in one directory or the
    other.

  * Even with the changes above, which made the code compile on x86, the
    sparc build still failed:

    cardbus.c fails to compile on sparc:

"../../common/io/cardbus.c", line 528: syntax error before or at: psm_intr_op_t

    psm_intr_op_t only defined in usr/src/uts/i86pc/sys/psm_types.h

"../../common/pcmcia/nexus/pcmcia.c", line 4849: syntax error before or at: =

    ddi_ispec_t is only used in 

./common/io/cardbus.c:#include "sys/nexusintr_impl.h"   /* for ddi_ispec_t */
./common/pcmcia/nexus/pcmcia.c: ddi_ispec_t             *ip = (ddi_ispec_t 
*)hdlp->ih_private;
./common/pcmcia/nexus/pcmcia.c: ddi_ispec_t     *ip = (ddi_ispec_t 
*)hdlp->ih_private;

    but no definition anywhere.

    I haven't further investigated this yet.

* ath 0.2:

  I've located the sparcv9 version of hal.o with ATH_HAL_VERSION "0.9.16.3"
  and built successfully so far.  I've yet to actually try the resulting
  driver.

* pcwl 0.1:

  This source tarball provides modified files already present in O/N, so you
  have to figure out what build they originally came from and detect the
  differences yourself.

  During a nightly -p build, make clobber failed in pkgdefs/SUNWpcwl on x86
  only.  I've no idea why yet.

* pcan 0.1:

  The source tarball lacks the modified files necessary to integrate into
  an ON build, i.e. 

  pkgdefs/Makefile
  uts/common/Makefile.files
  uts/intel/Makefile.intel.shared
  uts/sparc/Makefile.sparc.shared

  It would be really useful to indicate which build the sources were tested
  against and to provide *diffs* against the modified files so the changes
  can easily be applied to later sources.  I've made the necessary changes
  myself, but run into a problem:

  pcan.c fails to compile at all:

+ /opt/onstudio10/SUNWspro/bin/cc -xarch=amd64 -Ui386 -U__i386 -xO3 
../../intel/amd64/ml/amd64.il -D_ASM_INLINES -Xa -xspace -Wu,-xmodel=kernel 
-Wu,-save_args -v -xildoff -g -xc99=%none -W0,-noglobal -errtags=yes 
-errwarn=%all -xc99=%none -v -D_KERNEL -D_SYSCALL32 -D_SYSCALL32_IMPL -D_ELF64 
-D_DDI_STRICT -Dsun -D__sun -D__SVR4 -DDEBUG -D_SIMULATOR_SUPPORT -DC2_AUDIT 
-I../../intel -I../../common/pcmcia -I../../i86pc -Y I,../../common -c -o 
debug64/pcan.o ../../common/io/pcmcia/pcan.c 
"../../common/io/pcmcia/pcan.c", line 408: warning: implicitly declaring 
function to return int: REG_WRITE() (E_IMPLICIT_DECL_FUNC_RETURN_INT)
"../../common/io/pcmcia/pcan.c", line 1304: warning: implicitly declaring 
function to return int: REG_READ() (E_IMPLICIT_DECL_FUNC_RETURN_INT)
"../../common/io/pcmcia/pcan.c", line 1916: warning: implicitly declaring 
function to return int: REG_READ_P() (E_IMPLICIT_DECL_FUNC_RETURN_INT)
"../../common/io/pcmcia/pcan.c", line 1978: warning: implicitly declaring 
function to return int: REG_WRITE_P() (E_IMPLICIT_DECL_FUNC_RETURN_INT)
cc: acomp failed for ../../common/io/pcmcia/pcan.c
*** Error code 2
dmake: Warning: Command failed for target `debug64/pcan.o'

  I've found no definition of those four macros at all.

Any suggestions for the compile failures above (both x86 and sparc)?

Thanks.
        Rainer

-----------------------------------------------------------------------------
Rainer Orth, Faculty of Technology, Bielefeld University

Reply via email to