( bzt | 2024. 08. 03., szo – 20:02 )

ezeken sem kell külön "master" handler.
Így van, x86-on minden IRQ-hoz eleve külön handler rendelhető (ráadásul programozható, hogy melyik legyen az, szóval nemcsak a függvény címét állíthatod, hanem azt is, hogy tábla melyik rekeszéből vegye a függvénycímet). Viszont mégsem úszod meg az Assembly-t, mert RET helyett IRET utasítással kell visszatérni a handlerből, ráadásul az exception típusú handlerek hívásakor olyan a verem, mint az ökörhugyozás (egyszer van hibakód, máskor nincs), szóval ezt is rendbe kell tenni. A veremmutató direkt manupilálása pl olyan dolog, amit nem lehet C-ből (sem semmilyen más, magas szintű nyelvből) megcsinálni. (És ezzel még nincs is vége, 64 bites módban ott van még az IST is, ami képes vermeket kapcsolni megszakítás meg IRET híváskor, hasonlóan az ARM-es SP_ELx regiszterekhez. Ott meg különösen észnél kell lenni, hogy melyik verem is az aktív éppen, cserébe a megszakítás nem piszkálja a felhasználói módú vermet, így stack overflow támadás sem lehetséges a handlerben.)
alap ARM-on nincs systick
Á ne is mondd, heteket szívtam miatta. RPi-n például legalább 5 féle időzítőd van, és persze a saját doksija mindent nemes egyszerűséggel "ARM TImer"-nek hívja csak, aztán igazodj ki, melyik melyik... Végül is arra jutottam, hogy egyetlen van csak alap ARM-on, de az meg nem tud IRQ-t generálni, csak pollozni lehet (logikus, hisz az alap ARM-ben nincs IC). A BCM féle ARM Timer tudtommal még mindig nincs implementálva qemu-n (legalábbis mikor legutóbb néztem, még nem volt), a QA-as ARM Timer is csak azért működik, mert én megírtam (a BCM-es patchemet nem olvasztották be, azt mondták, implementáljam le az összes többi BCM2837-es eszközt is, majd akkor meggondolják. Erre azt mondtam, fenéket, nem tollas a hátam. A QA-s patchem egy másik reviewer-hez került, ott nem volt semmi gond).