A hardware search engine facility is provided to allow CPU search and
update of a Forwarding Table CAM under the control of software running on
the CPU. The hardware search engine provides one or more comparand-mask
pairs which allow for a match, exclusion or magnitude comparison on
specific entry values and/or the option to ignore or "don't care" certain
bits of the entry. Control registers may be set in software to specify a
start address and stop address in the CAM for the search. An indication
of valid or invalid entries may be provided as well. Once the search is
initiated by software, the search engine will read the entries
sequentially starting from the programmed start address. It will perform
a compare using the comparand-mask pair and attempt to identify a match.
The locations in the CAM which match the search criteria may be put into
a CPU-accessible memory. If the memory fills up before it can be read by
the software, the search may be halted until the memory is emptied. A
programmable action may instead, or in addition, be set to take place in
the event of a match. Such programmable actions may include, but are not
limited to, marking the entry, deleting the entry, change status bits
corresponding to the entry, rewriting some of the entry, and the like.