Skip to content

Latest commit

 

History

History
60 lines (39 loc) · 1.47 KB

AllocTrap.md

File metadata and controls

60 lines (39 loc) · 1.47 KB

NAME

AllocTrap -- allocate a processor trap vector

SYNOPSIS

    trapNum = AllocTrap(trapNum)
    D0                  D0

    LONG AllocTrap(LONG);

FUNCTION

Allocate a trap number from the current task's pool. These trap numbers are those associated with the 68000 TRAP type instructions. Either a particular number, or the next free number may be allocated.

If the trap is already in use (or no free traps are available) a -1 is returned.

This function only affects the currently running task.

Traps are sent to the trap handler pointed at by tc_TrapCode. Unless changed by user code, this points to a standard trap handler. The stack frame of the exception handler will be:

0(SP) = Exception vector number. This will be in the range of 32 to 47 (corresponding to the Trap #1...Trap #15 instructions). 4(SP) = 68000/68010/68020/68030, etc. exception frame

tc_TrapData is not used.

WARNING

Traps may not be allocated or freed from exception handling code. You are not allowed to write to the exception table yourself. In fact, on some machines you will have trouble finding it - the VBR register may be used to remap its location.

INPUTS

trapNum - the desired trap number {of 0..15} or -1 for no preference.

RESULTS

trapNum - the trap number allocated {of 0..15}. If no traps are available, this function returns -1. Instructions of the form "Trap #trapNum" will be sent to the task's trap handler.

SEE ALSO

FreeTrap