Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Stefan Monnier Newsgroups: comp.arch Subject: Re: is Vax addressing sane today Date: Mon, 23 Sep 2024 18:00:36 -0400 Organization: A noiseless patient Spider Lines: 33 Message-ID: References: <09ce1622b872f0b0fa944e868a8c97be@www.novabbs.org> <2024Sep10.094353@mips.complang.tuwien.ac.at> MIME-Version: 1.0 Content-Type: text/plain Injection-Date: Tue, 24 Sep 2024 00:00:37 +0200 (CEST) Injection-Info: dont-email.me; posting-host="7a2524499de57dc5fdc44c8e642a23e8"; logging-data="3025851"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+Hpj/5ja7C3d427AfK+CEbUrcOdVXKt+I=" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:2xEExspjHIGzNmbvjt5d7+QquPU= sha1:v/wmaIwwfJxGnPb5gmLp9bHpFBQ= Bytes: 2888 > Some of the things that minimize the "badness" of taking an exception:: > > a) deliver control to user signal handler without taking an > excursion through GuestOS. (think 10 cycles) > b) when control arrives, receiving thread is already reentrant. > c) when control arrives, the instruction (bits) and its operand > values are delivered to the exception handler. So, the exception > handler has what it needs to deal with the problem at hand. > d) when control returns, the result (R0) is delivered back to the > destination register. > e) (b, c, d) are performed without handler needing to understand > how. Handler is just a subroutine that receives arguments (c) > fixes the problem, and returns a non-excepting value, or abort. > f) return has a way to re-execute the instruction or to skip the > instruction under control of handler without having access > to excepting-IP and without knowing the length of the > instruction. > g) during (a..f) nobody ever has to disable interrupts or > exceptions or re-enable them later. Priority and privilege > are inherited automatically from excepting thread. Note that in the case where you want the overflow exception to jump to some alternate code path (a language-level exception handler, or a code path that continues with a bigint instead of a register-sized integer), (d) is useless because you don't want to return to the overflowing instruction (nor to the immediately following instruction). Instead you usually want to lookup a side table indexed with the address of the overflowing instruction to find the "exception handler" to "return" to. (a) (b) and (c) are still very welcome, of course. Stefan