<?xml version="1.0"?>
<!DOCTYPE webpage
  PUBLIC "-//NetBSD//DTD Website-based NetBSD Extension//EN"
         "http://www.NetBSD.org/XML/htdocs/lang/share/xml/website-netbsd.dtd">

<webpage id="about-portability">
<config param="desc" value="Portability and supported hardware platforms"/>
<config param="cvstag" value="$NetBSD: portability.xml,v 1.2 2007/06/09 16:11:14 dsieger Exp $"/>
<config param="rcsdate" value="$Date: 2007/06/09 16:11:14 $"/>
<head>
<title>Portability and supported hardware platforms</title>
</head>

<sect1 id="netbsd-portability">
<title>Portability</title>

<para>
Every effort is made to keep everything cleanly split into 'Machine
Dependent' (MD) and 'Machine Independent' (MI) areas. For example,
an Ethernet chipset would have a single MI core hardware driver,
which would be matched with appropriate MD bus attachment code for a
given platform. Not all drivers are as clean as we would like for
historical reasons, but any new driver will be, and old drivers
are in the process of being converted across.
</para>

<para>
As a concrete example, a driver, such as the &man.fxp.4; Intel i82557,
i82558, and i82559 Ethernet interface driver, would be used to operate
an Intel EtherExpress card in an <port>alpha</port>, <port>arc</port>, 
<port>cats</port>, <port>cobalt</port>, <port>i386</port>, <port>macppc</port>,
or a <port>prep</port> system, all of which have pci slots.
</para>

<para>
Additionally, the same driver would operate a Cardbus device which used
the same chipset. This means that the code is written once, and used
many times in many places. If mistakes had been made in the original
implementation of the driver, use on such a wide variety of systems
would usually bring problems to the surface more quickly. Understanding
what makes a PPC different from an i386 leads to well thought out
design, and better code.
</para>
</sect1>

<sect1 id="supported-platforms">
<title>Supported hardware platforms</title>

<para>
NetBSD's slogan is <emphasis>"Of course it runs NetBSD"</emphasis>, and with 
good cause.  At the time of writing NetBSD provides <ulink
url="../releases/formal.html">formal releases</ulink> for 53 <ulink
url="../ports/">architectures</ulink>, and has integrated ports for four
others. Those numbers can be deceptive - within one platform
(<port>mac68k</port>), there are 93 different
machines, of which 89 are currently supported (37 fully).
</para>
</sect1>

</webpage>
