Actually, during a homing cycle the axis will home against the first switch it hits (limit switch OR home switch), this is to allow for systems that don't have home switches. I've used this setup on a Bridgeport since they only have one switch for each of the X and Y axes.
Additional information came from: http://emc.sourceforge.net/NIST-archive/msg02043.html which says (also a n extract):
I was having a problem understanding how homing worked as it seemed to be buggy to me. I contacted Fred Proctor and following is his explanation. Found out that it worked fine, I just didn't understand it and had the values set wrong.
Tim [Denver, CO]
The way homing works is that motion proceeds at the [AXIS_#] HOMING_VEL speed in the direction specified by [AXIS_#] HOMING_POLARITY until the home switch trips. The polarity of the home switch is set by [AXIS_#] HOME_SWITCH_POLARITY. Then, the axis position at the trip point is saved and motion is aborted. Once the move stops, a move back to the saved trip point plus any offset in [AXIS_#] HOME_OFFSET is done, and the axis position is set to the value specified by [AXIS_#] HOME.
With HOME_OFFSET and HOME set to 0, the homing sequence would look like this:
1. slow jog toward home switch. 2. switch trips. 3. jog decelerates and move terminates shortly after home switch. 4. jog back to switch trip position. 5. position set to 0, and digits turn green.
With HOME_OFFSET set to -0.1 (sign depends on value of HOMING_POLARITY), and HOME set to 3.0, the homing sequence would look like this:
1. slow jog toward home switch. 2. switch trips. 3. jog decelerates and move terminates shortly after home switch. 4. jog back to point 0.1 units past switch trip position (to get off switch if you need to) 5. position set to 3.0, and digits turn green (lets you specify 3.0 as home for this axis).
Thanks to the original sources of this info.