Date: Wed, 11 Jan 2012 15:57:11 -0800 From: Juli Mallett <jmallett@FreeBSD.org> To: Oleksandr Tymoshenko <gonzo@freebsd.org> Cc: "freebsd-mips@freebsd.org" <freebsd-mips@freebsd.org>, Alan Cox <alc@rice.edu> Subject: Re: MIPS64 modules Message-ID: <CACVs6=8d76EbqErdGjrsb2wqP_OydXK%2BU6PmXD=-CNQeeAXRjA@mail.gmail.com> In-Reply-To: <4F0E1965.6060808@freebsd.org> References: <4F0E1965.6060808@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Jan 11, 2012 at 15:21, Oleksandr Tymoshenko <gonzo@freebsd.org> wro= te: > =C2=A0 =C2=A0Modules on MIPS use the same interface as AMD64 modules: > sys/kern/link_elf_obj.c. It works for MIPS32 but there is a problem > with MIPS64. sys/kern/link_elf_obj.c calls vm_map_find that uses > KERNBASE as a map base. As I told - it works for mips32 because > KERNBASE for mips32 is located before actual virtual memory area > (KERNBASE points to directly-mapped KSEG0 segment). But for MIPS64 > it's not the case - KERNBASE points to the very end of address space > and vm_map_find fails. It seems like the problem here must be because on 32-bit MIPS the direct-mapped region is less than kernel virtual mapped address space, and either some macro we provide or the VM code makes a wrong assumption about that relationship, since in 64-bit addressing, the direct-mapped region is much, much higher, and so we're not looking up something in the direct map when we ought to be? Or some other conditional is wrong? Is that right?
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CACVs6=8d76EbqErdGjrsb2wqP_OydXK%2BU6PmXD=-CNQeeAXRjA>