Subject: grfmmap bug?
To: None <port-atari@netbsd.org>
From: maximum entropy <entropy@zippy.bernstein.com>
List: port-atari
Date: 12/16/1998 03:39:21
I don't understand how grfmmap() can possibly work for devices such as
the et4000 which have memory-mapped configuration registers.

        if (off >= 0 && off < gi->gd_regsize)
                return(((u_int)gi->gd_regaddr + off) >> PGSHIFT);

        if ((off >= 0) && (off < gi->gd_fbsize))
                return (((u_int)gi->gd_fbaddr + off) >> PGSHIFT);

Shouldn't there be something between these two blocks of code along
the lines of "off -= m68k_round_page(gi->gd_regsize);"?  Otherwise how
can the first page or so of frame buffer memory ever get mapped?

For the normal atari frame buffer this shouldn't be a problem because
gi->gd_regsize is always 0.

I don't have an et4000, so I can't test this, but it does look really
suspicious.  Am I just confused or is there something very wrong
with this code as it stands?

Cheers,
entropy

--
entropy -- it's not just a good idea, it's the second law.