I have an HP ML350 G3 machine with a Xeon CPU. The machine has several 64 bit expansion slots, but if I try to install 64 bit OS it says I have a 32 bit CPU. how can a 32 bit CPU have 64 bit slots?
The 64-bit PCI-X expansion slots are simply double-width versions of the standard 32-bit ones, to provide higher bandwidth. They have nothing to do with the actual CPU architecture.
See here for more information: http://en.wikipedia.org/wiki/PCI-X
If the CPU is 32-bit, then you can only install a 32-bit operating system.