Skip to content

Tail chaining breaks preemption level handling #755

Description

@reosdev

Explicitly, xepc, xpistatus remain unchanged.

Keeping xpistatus unchanged disables chaining interrupts of different preemption levels:

  • xpistatus.pithreshold holds previous context's threshold
  • During tail chaining, new interrupt may have different (lower) preemption level
  • If pithreshold remains unchanged, it reflects wrong (previous handler's) threshold
  • When new handler returns via xret, wrong threshold is restored

This restricts tail chaining to same-preemption-level interrupts only, which is not documented.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions