Purpose and scope
This unit defines current Access Control Ring state, its four-bit representation, portable trap targets, permitted service requests, and trap-vector lookup.
PTO-ARCH-SYSTEM-REGISTERS-ACCESS-CONTROLThe complete ASL owner is shown directly below.
// PTO-UNIT: {"id":"PTO-ARCH-SYSTEM-REGISTERS-ACCESS-CONTROL","surface":"arch","classification":["system-registers","access-control"],"depends_on":["PTO-ARCH-PROGRAMMING-MODEL-EXECUTION-CONTEXT"]}readonly func CurrentACR() => AccessControlRingbegin return _CurrentACR;end;
pure func AccessControlRingBits(ring: AccessControlRing) => bits(4)begin case ring of when 0 => return '0000'; when 1 => return '0001'; when 2 => return '0010'; when 3 => return '0011'; when 4 => return '0100'; when 5 => return '0101'; when 6 => return '0110'; when 7 => return '0111'; when 8 => return '1000'; when 9 => return '1001'; when 10 => return '1010'; when 11 => return '1011'; when 12 => return '1100'; when 13 => return '1101'; when 14 => return '1110'; when 15 => return '1111'; end;end;
func SetCurrentACR(ring: AccessControlRing)begin _CurrentACR = ring; _SystemRegisters.core_state[3:0] = AccessControlRingBits(ring);end;
pure func TrapTargetForFault(source: AccessControlRing) => AccessControlRingbegin if source == 0 then return 0; else return 1; end;end;
pure func TrapTargetForInterrupt(source: AccessControlRing) => AccessControlRingbegin return TrapTargetForFault(source);end;
pure func ServiceRequestPermitted(source: AccessControlRing, request_type: bits(4)) => booleanbegin if source == 1 then return request_type == '0000' || request_type == '0010'; elsif source >= 2 then return UInt(request_type) <= 2; else return FALSE; end;end;
pure func ServiceRequestTarget(source: AccessControlRing, request_type: bits(4)) => AccessControlRingbegin assert ServiceRequestPermitted(source, request_type); if request_type == '0001' then return 1; else return 0; end;end;
readonly func TrapVectorEntry(target: AccessControlRing, fault_address: Word) => Wordbegin let index = ((target * 4096) + 0x0f01) as SystemRegisterFileIndex; let vector_base = _ExtendedSystemRegisters[[index]]; if vector_base == Zeros{PTO_XLEN} then return fault_address; else return vector_base; end;end;
This unit defines current Access Control Ring state, its four-bit representation, portable trap targets, permitted service requests, and trap-vector lookup.
CurrentACR returns _CurrentACR. AccessControlRingBits maps ring values 0 through 15 to the corresponding four-bit binary value.
SetCurrentACR updates both _CurrentACR and core_state[3:0], keeping the stored ring and its system-register representation synchronized.
TrapTargetForFault maps source ACR0 to target ACR0 and every nonzero source to target ACR1. TrapTargetForInterrupt uses the same rule.
From ACR1, service request types 0000 and 0010 are permitted. From ACR2 through ACR15, request types whose unsigned value is at most 2 are permitted; ACR0 permits none.
For a permitted request, type 0001 targets ACR1 and every other permitted type targets ACR0.
TrapVectorEntry reads extended-system-register index target * 4096 + 0x0f01. A nonzero entry is the vector base; a zero entry falls back to the supplied fault address.
ServiceRequestTarget asserts that the request is permitted. Callers must establish permission before asking for a target.
A type-0001 request from ACR2 is permitted and targets ACR1. The same request from ACR1 is not permitted, so it must not be passed to ServiceRequestTarget.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
11 matching entries
PTO-AVS-ARCH-SYSTEM-REGISTERS-ACCESS-CONTROL-STATIC-001tests/asl/arch/system-registers/access-control/arch-static-access-control-contract-001.asl84f205e7b465e1547898bc952ff27a94ded966a19ee9e2a3f822c428dfdb3e24PTO-EVIDENCE-RELEASE-TRACEABILITYPTO-EVIDENCE-RELEASE-TRACEABILITYspec/evidence/release-traceability-readiness.jsonc7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3ePTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREspec/evidence/instruction-contract-closure.json3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106aPTO-EVIDENCE-ARCHITECTURE-READINESSPTO-EVIDENCE-ARCHITECTURE-READINESSspec/evidence/architecture-readiness.json4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004PTO-EVIDENCE-RELEASE-GATE-READINESSPTO-EVIDENCE-RELEASE-GATE-READINESSspec/evidence/release-gate-readiness.jsona0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0PTO-EVIDENCE-RELEASE-MANIFESTPTO-EVIDENCE-RELEASE-MANIFESTspec/release-manifest.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0003…
ADR-0003docs/status/decisions/0003-pto-owned-system-register-names.mdc6a5379776c3b29c25f0896bc56f84d8f5c15832bbba0859b822aa99a65e342dLoading ADR-0008…
ADR-0008docs/status/decisions/0008-architectural-state-contract.md9c33e1b57d0f04c4d808ee61aaf975187a3dbd32a071329ca65a916dc0e614caLoading ADR-0010…
ADR-0010docs/status/decisions/0010-acr-routing-and-context-reset.md7594432a33c54880227fa3ab495bf5b29d406ac3b4e83634ffefe0a713e85f35Loading ADR-0017…
ADR-0017docs/status/decisions/0017-system-register-behavior-classes.md6b4f7a29546952e4c5c61b0f4f921b04ecbc8340ba4ad86619277f17da97f95fLoading ADR-0031…
ADR-0031docs/status/decisions/0031-scalar-sys-totality-and-profile-boundaries.md5680b3516be6c28a1ccb198c99f5efb66317c65330f6d87434173024d2795a7d{
"classification": [
"system-registers",
"access-control"
],
"documentation": "docs/arch/system-registers/access-control.md",
"id": "PTO-ARCH-SYSTEM-REGISTERS-ACCESS-CONTROL",
"mnemonic": null,
"readiness_subjects": [
"ADR-0003",
"ADR-0008",
"ADR-0010",
"ADR-0017",
"ADR-0031"
],
"semantic_tests": [],
"source": "asl/arch/system-registers/access-control.asl",
"surface": "arch",
"tests": [
"PTO-AVS-ARCH-SYSTEM-REGISTERS-ACCESS-CONTROL-STATIC-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd86812b902ec666fffe515cb48ef7f54c144d19b514561537489a670349369eee3a8191e8c0bac4956461c768db931b4c6aede80658a4d4d9aa86a1cba4f70946b6dc2asl/arch/system-registers/access-control.asl