How can it be used from software if it is a hardware semaphore? Is it that there is a software API which is actually implemented in HW?

I ask as I am implementing firmware to interface to some hardware. There is going to be a lot of information exchange between the hardware and the firmware. I overhead talk of hardware semaphore and just wanted to find out more information on it. Some literature on this would be helpful