> # uname -a
> Linux XXXXXXXXXXXXX 2.6.18-348.el5xen #1 SMP[...]
You're running a Xen kernel, so the "missing" memory might be in use by other Xen domains (=VMs), or kept free by the Xen hypervisor so that you can add a new domain.
What is the output of "xm info | grep memory" command?
Are you using the "dom0_mem" boot option in /boot/grub/grub.conf?
This might be useful. It is written for Oracle VM, but is valid for other Xen setups too:
https://blogs.oracle.com/wim/entry/understanding_memory_allocation_in_oracle