Special classes

Internal protection (class 1)

There is an internal PXROS-HR MPU trap handler that is called first. This handler tries to solve the access problem. If it fails, the trap is not handled, and a user-trap handler is called if it was installed.

The internal PXROS-HR MPU trap handler that first tries to resolve the memory access does not change the ICR.CCPN value and therefore runs on task level. However, if the kernel does not resolve the memory access, the default PXROS-HR trap handler is called.

During PXROS-HR internal trap handler execution the interrupt system is restored to the previous interrupt state. If the kernel does not resolve the memory access, the interrupt system gets again disabled before calling the default PXROS-HR trap handler.

This class needs at least 3 free CSAs when the PXROS-HR tracing mechanism is not used. The trace configuration may influence how many CSAs are needed.

Context management (class 3)

In the case of FCU, a user-defined trap handler is not called because there are no free CSAs. FCU traps will result in an endless trap recursion because saving the lower context will always trigger the next FCU trap. Therefore, it is recommended that the LCX is set up properly and the FCD trap is handled.

An interrupt can occur while handling the FCD trap, resulting in spending another CSAs.

System bus and peripheral errors (class 4)

In case of data access asynchronous error, before calling the user-defined trap handler DATR register is read, cleared and its content is passed to the user-defined trap handler in the dstr parameter.

System call (class 6)

The SYSCALL instruction generates a system call trap, providing a secure mechanism for the user mode application code to request Supervisor mode services. If a handler is installed for SYSCALL it is never used — there is no calling of a user trap handler in this class.