Page MenuHomeFreeBSD

arm64: Have a common call to userret
ClosedPublic

Authored by andrew on Feb 11 2026, 6:13 PM.
Tags
None
Referenced Files
F150981535: D55250.id171772.diff
Sun, Apr 5, 7:14 AM
Unknown Object (File)
Sat, Apr 4, 5:05 AM
Unknown Object (File)
Sat, Mar 28, 2:24 AM
Unknown Object (File)
Fri, Mar 27, 11:31 AM
Unknown Object (File)
Fri, Mar 27, 8:08 AM
Unknown Object (File)
Fri, Mar 27, 8:08 AM
Unknown Object (File)
Fri, Mar 27, 6:55 AM
Unknown Object (File)
Tue, Mar 17, 10:18 PM
Subscribers

Details

Summary

Rather than each exception calling userret use a common copy. As
syscallret already calls userret we need to skip it in that case.

Sponsored by: Arm Ltd

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

IMHO the control flow could be made less confusing. Right now it is 'break' -> userret, and in one place it is goto no_userret. I suggest to add a control variable like 'use_userret', set to true, assigned from svc_handler() return value. Then instead of goto no userret. check the value of use_userret around userret() call. Hope it is understandable.

This revision is now accepted and ready to land.Feb 12 2026, 6:37 AM

Set a variable to check if we need to skip userret

This revision now requires review to proceed.Mar 5 2026, 3:42 PM
sys/arm64/arm64/trap.c
700

Should this be false?

Fix the initial value of skip_userret

Remove userret from EXCP_MOE. Was missed in a rebase.

This revision is now accepted and ready to land.Tue, Mar 17, 2:30 PM
This revision was automatically updated to reflect the committed changes.