Every kernel needs basic information about your CPU and its associated equipment.
option | I*_CPU |
These options tell your kernel how to speak to the CPU. Each type of CPU has its own instruction sets and features, some of which OpenBSD will take advantage. You can see what sort of CPU your system has by checking /var/run/dmesg.boot for information on your CPU. For example, my test system has the following line near the top of /var/run/dmesg.boot:
cpu0: Intel Pentium/MMX ("GenuineIntel" 586-class) 166 MHz
This is a 586-class CPU, or a Pentium. A kernel that runs on it must include the necessary options for this CPU, or the kernel will not boot!
option I386_CPU | Intel-compatible 386 CPU |
option I486_CPU | Intel-compatible 486 CPU |
option I586_CPU | Intel-compatible Pentium CPU |
option I686_CPU | Intel-compatible Pentium II or better CPU |
You might note that there's no differentiation between a Pentium II and a Pentium III. That's mainly because there's no real hardware difference between a Pentium II and a Pentium III, other than size and speed.
option | GPL_MATH_EMULATE |
A floating-point unit handles floating-point math. 386-based systems didn't come with a floating-point unit, although one was available as an add-on coprocessor. Many 486-based systems also lack a floating-point unit. Later 486s, Pentiums, and more modern chips all include an integrated floating-point unit.
OpenBSD absolutely requires a floating-point unit. This option provides a floating-point emulator that runs in software. It is slow, but it will allow you to run OpenBSD on an ancient 386 if you really want to.
The option is called GPL_MATH_EMULATE instead of, say, MATH_EMULATE because the GNU General Public License covers this particular section of kernel code; you cannot use this kernel option in a product with a proprietary kernel without releasing the source code to your kernel. Today, even inexpensive embedded systems have a floating-point unit, so this isn't such a big deal.