> > For example. in this code segment: > > > > if (address < KERNEL_BASE || address + size > sNextVirtualAddress) { > > panic("mmu_free: asked to unmap out of range region (%p, size % > > lx)\n", > > (void *)address, size); > > } > > > > (address + size > sNextVirtualAddress) always returns true... no matter > > what size (address + size) actually is. > > What are the types of these variables? Perhaps something is a signed > type when it should be an unsigned type. I figured out this issue. It basically fixed itself when I the multilib variable was setup correctly. Since the multilib wasn't set up correctly the address variable of type addr_t was a 64bit int while the other variables were 32bit size_t. > > Secondly, While building gcc it outputs a x86_64 gcclib, but it doesn't > > output the x86 gcclib. Is there an option or setting in the build script > > that will output the gcclib for both architectures? > > You have to set up a multilib. See, e.g., gcc/config/i386/t-linux64. > > Ian Thanks for the assistance.