To add detail to David Schwartz's answer, by specifying the kernel boot parameter to set the amount and start address used by the kernel, you can do what you want.
For example, add the following command to your kernel boot args:
mem=256M@0x80000000
Will indicate the kernel should use 256M starting at 0x80000000, which is what you require.
You should revert the CONFIG settings to their original values, and verify your kernel will boot correctly in its default configuration (with no mem= setting).
You can first try out mem= by specifying
mem=256M
which will give you a reduced memory area starting at 0, with the top 256M being unused. Once that is seen to work, use the 256M with offset as above.
Take care also where in RAM you load the initial compressed image by uBoot, to ensure it does not conflict with the eventual kernel memory area.
Best Answer
The allocators you mention are userspace allocators, entirely different to kernel allocators. Perhaps some of the underlying concepts could be used in the kernel, but it would have to be implemented from scratch.
The kernel already has 3 allocators, SLAB, SLUB, SLOB, (and there was/is SLQB). SLUB in particular is designed to work well on multi-CPU systems.
As always if you have ideas on how to improve the kernel, your specific suggestions, preferably in the form of patches, are welcome on LKML :-)