On Mon, Sep 04, 2000 at 08:48:33PM -0400, Kevin Lawton wrote:
> I got a message from someone working towards compiling plex86
> on Linux kernel 2.4:
I lurk on the list...
> > Still getting an error -- MAP_NR (host-linux.c, line 954 or nearby) -- what's
> > that do? I'm no kernel hacker ;)
>
> It takes an address as returned by get_free_page(), and returns
> the top 20bits of the physical address of the page.
>
> Pages returned by get_free_page() are called 'physical', but
> really they are offset by a kernel offset on newer kernels.
> We want the real physical address, shifted right 12 bits;
> the physical page index.
>
> I'm including include/asm/page.h from my linux kernel.
>
> If anyone else has ideas, please chime in.
>
> It looks like MAP_NR() was supplanted by virt_to_page(),
> probably because of reworking of kernel virtual memory
> handling to take advantage of large system RAM.
>
> You could try that macro instead. Not guaranteeing anything. :^)
Segfaults. Four lines showed up in the logs; didn't look that useful.
I'm still trying to track it down; unfortunately debugging at the kernel
level is a good deal more difficult than user level.
[snip]
> #define MAP_NR(addr) (__pa(addr) >> PAGE_SHIFT)
My /usr/src/linux/include/asm/page.h:
#define virt_to_page(kaddr) (mem_map + (__pa(kaddr) >> PAGE_SHIFT))
... so what's mem_map? Looking at it...
Kenneth