[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

XFree86 on PowerPC



PowerPCは初心者で、斉藤といいます。
初心者な質問がありまして、どなたかヒントいただけませんか?

CPUがp750(400MHz)で、NetBSD-1.5.1(prepを参考にして)をgcc-3.0.1を使って、
動かしてます。chips69000にxsrc/xfree/xc/programs/Xserverに入っている
XFree86(4.0.3)を動かしてみました(まだ表示だけですが動いてます)。

そこで質問ですが、XFree86がPCIメモリ空間や、I/O空間をアクセスするために
/dev/memをopenし、mmapしようとしますが、マルチユーザモードでは、

ppc_iomap: failed to open /dev/mem (Operation not permitted)

と、エラーとなります。
securelevelに-1を初期設定すれば、とりあえずここは通ります。

次に、sys/arch/powerpc/powerpc/mem.cにある、mmmap()関数は、

paddr_t
mmmmap(dev, off, prot)
        dev_t dev;
        off_t off;
        int prot;
{
        return -1;
}

となっていて、mmapできないようになっています。
そこで再度のとりあえず、

paddr_t
mmmmap(dev, off, prot)
        dev_t dev;
        off_t off;
        int prot;
{
        struct proc *p = curproc;       /* XXX */

        if (minor(dev) != 0)
                return (-1);

        if (suser(p->p_ucred, &p->p_acflag) != 0)
                return (-1);
        return (powerpc_btop((u_int)off));
}

のように変更しました。

XFree86を動かす場合は、securelevelを無効にするのは通常でしょうか?
/dev/memでmmapできないのが正しいとすれば、Xサーバが動作する機種の場合、
どうやって、pci領域を参照するのでしょうか?

これは、ついでの質問ですが、XFree86がグラフィカルなコンソールデバイスをopen
するようでしたので、config/XXXファイルに

# wscons
# PCI graphyics devices
vga*            at pci? dev ? function ?        # PCI VGA Graphics
wsdisplay*      at vga?

を加えたのですが、このwsdisplayとか、wscons, wsmouse, wskbdのwsは
どんなデバイスあるいは特定の装置を意味しているのでしょうか?

ちなみに、xsrcにはいっている、もう一つのxsrc/xc/programs/Xserverは、
うまくmakeできなかったのですが、本当はこっちを動かすのでしょうか?