The trick here is that the bitness of the Xen hypervisor and the bitness of the dom0 kernel and other guests can be different.
You can run a 64bit hypervisor and have a 32bit dom0 and guests.
Also of note, the dom0 doesn't manage the memory, but instead Xen the hypervisor does.
In your dom0 you will only see the memory that is allocated to dom0 by Xen. Xen the hypervisor (as long as it is 64bit (or even 32bit pae should work)) can handle the larger amount of memory. top will show the memory of dom0, which is what you checked, but xm top (or xentop) will show the amount of memory that Xen knows about. Check xm top (xentop) and see if Xen knows about all of the memory. If not, you should be able to install the 64bit version of the xen hypervisor (not that this is different than the dom0 kernel, which can still be 32bit - it is actually recommended that it is 32bit for performance reasons - see http://www.slideshare.net/xen_com_mgr/6-stefano-spvhvm