FPA(4S)

NAME
fpa - Sun-3/Sun-3x floating-point accelerator

CONFIG — SUN-3/SUN-3X SYSTEMS
device fpa0 at virtual ? csr 0xe0000000

SYNOPSIS
#include <sundev/fpareg.h>
open("/dev/fpa", flags);

DESCRIPTION

FPA and FPA+ are compatible floating point accelerators available on certain Sun-3 and Sun-3x systems. They provide hardware contexts for simultaneous use by up to 32 processes. The same fpa device driver manages either FPA or FPA+ hardware.

Processes access the device using open(2V) and close(2V) system calls, and the FPA is automatically mapped into the process' address space by SunOS. This is normally provided transparently at compile time by a compiler option, such as the -ffpa option to cc(1V).

The valid ioctl(2) system calls are used only by diagnostics and by system administration programs, such as fpa_download(8).

IOCTLS

FPA_ACCESS_OFF
    Clear FPA_ACCESS_BIT in FPA state register to disable access to constants RAM using FPA load pointer.

FPA_ACCESS_ON
    Set FPA_ACCESS_BIT in FPA state register to enable access to constants RAM using FPA load pointer.

FPA_FAIL
    Disable the FPA.

FPA_GET_DATAREGS
    Return the contents of 8 FPA registers.

FPA_INIT_DONE
    Called when downloading is complete. Allows multiple users to access the FPA.

FPA_LOAD_OFF
    Set FPA_LOAD_BIT in FPA state register to disable access to microstore or map RAM via FPA load pointer.

FPA_LOAD_ON
    Set FPA_LOAD_BIT in FPA state register to enable access to microstore or map RAM using FPA load pointer.

The following two ioctl() requests are for diagnostic use only. fpa must be compiled with FPA_DIAGNOSTICS_ONLY defined to enable these two calls.

FPA_WRITE_STATE
    Overwrite the FPA state register.

FPA_WRITE_HCP
    Write to the hard clear pipe register.

ERRORS

The following error messages are returned by open system calls only.

EBUSY
    All 32 FPA contexts are being used.

EEXIST
    The current process has already opened /dev/fpa.

EIO Downloading has not completed, so only 1 root process can have the FPA open at a time.

ENETDOWN
    FPA is disabled.

ENOENT
    68881 chip does not exist.

ENXIO
    FPA board does not exist.

The following error messages are returned by ioctl system calls only.

EINVAL
    Invalid ioctl. This may occur if diagnostic only ioctls, FPA_WRITE_STATE or FPA_WRITE_HCP, are used with a driver which didn't compile in those calls.

EPERM
    All ioctl calls except for FPA_GET_DATAREGS require root execution level.

EPIPE
    The FPA pipe is not clear.

FILES
/dev/fpa
    device file for both FPA and FPA+.

SEE ALSO
cc(1V), close(2V), ioctl(2), open(2V) fpa_download(8), fparel(8), fpaversion(8)

DIAGNOSTICS

If hardware problems are detected then all processes with /dev/fpa open are killed, and future opens of /dev/fpa are disabled.