Snooping

Co to je

Snooping je schopnost WHDLoad, ktera kontroluje a loguje CPU pristupy k custom registrum. Pokud je Snoop aktivovan, vsechny nespravne pristupy k custom registrum vytvori chybu a nainstalovany program bude ukoncen. Nespravne pristupy jsou: Strobe registry mohou byt cteny nebo zapisovany.Custom registry se odlisuji - OCS (Old ChipSet - A500, A1000, old A2000), ECS (Enhanced ChipSet - A600, nova A2000, A3000) a AGA (Advanced Graphics - A1200, A4000). Takze se tato funkce hodi obzvlaste pro hledani chyb ve starych programech, zpusobenych spatnym pristupem k AGA registrum.

Jak to funguje

Pokud je snooping zapnuty, WHDload oznaci adresy custom registru v MMU translation tree jako nespravne. Diky tomu se kazdy pristup do custom registru stane Access Fault vyjimkou. WHDload tuto vyjimku ovlada, takze muze zjistit, jestli je pristup spravny nebo ne (pri nekorektnim pristupu je program ukoncen, jinak program pokracuje).
Kvule pretizeni vyjimek a emulacni sekvenci se beh programu znacne zpomali. Jak moc, zalezi na CPU, typu Chip RAM a stackpointer aligmentu. Vse se take lisi podle druhu pristupu (Byte/Word/LongWord, Read/Write). Na 68030 jsou zapisy rychlejsi nez cteni (protoze pri cteni je stackframe 92 bajtu, pri psani 32), na 68060 je to naopak, protoze emulace zapisu je vic slozita.

Fast Snoop Mode

Volba Snoop/S zapina rychly snooping. Read pristupy nebudou testovany. Zadne specialni zkosuky nejsou provedeny. Tento mod je uzitecny jen pro ziskani obsahu custom registru, napr. pro ulozeni obrazku pomoci SP.

Copper List Scanner

Od verze 13 budou zkouseny take copperlisty. Scanner bude aktivovan pri zapisu do registru coplc. Scanner prochazi copperlist a overuje vsechny move instrukce aplikovanim omezeni zpusobenych Snoop volbou. Skip a Wait instrukce budou ignorovany, Pokud scanner objevi ilegalni pristup, program bude ukoncen s chybovou hlaskou. Scanner nasleduje branche (copjmp), detekuje smycky a zkousi az 16 sublistu. Pohyby v copperlistech budou ulozeny do interniho logu pro custom registry a ten bude vypsan do souboru pri exitu. Scanner funguje ve Fast Snoop modu.

Zkouska Blitter Priority

Kdyz je volba ChkBltHog/S aktivovana, WHDLoad otestuje, jestli instalovany program nezapina BltHog bit zapsanim do dmacon registru. Priorita blitteru muze zpusobit problemy na nekterych konfiguracich v souvislosti s rozsahlymi operacimi pres blitter (pouziti vsech kanalu).

Test velikosti blitter bloku

Kdyz je volba ChkBltSize/S aktivovana, WHDlaod otestuje, jestli prace blitteru nepristupuje mimo vyhrazenou pamet. Pri zapisu do bltsize nebo bltsizh zkousi, jestli je zapnut radkovy mod - pokud ano, nebude WHDLoad zkouset velikost bloku. Jinak vypocita WHDLoad prvni a posledni word pro kazdy aktivovany DMA kanal. Jestli je adresa mimo BaseMem uzemi, program bude ukoncen s requesterem. Kalkulace je navrzena k praci se vsemi mody.

Blitter Wait test

Pokud je volba ChkBltWait/S zapnuta, WHDLoad bude sledovat instrukce, aby overil, ze nainstalovany program korektne ceka na konec blitter operace nez zacne novou. Pouziva interni hodnotu, ktera reprezentuje status dalsi blitter operace. Hodnota je nastavena pri zapisu do bltsize nebo bltsizh a vymazana, kdyz je cten dmaconr registr. Pri kazdem kontrolovanem zapisu je hodnota testovana a pokud je zjisteno, ze predchozi blitter operace stale bezi, program bude ukoncen s chybovym registrem s adresou neukonceneho blitter procesu.
Jsou ale dva nedostatky: pouziti blitteru pres copperlist neni testovano a pouziti blitter preruseni zpusobi, ze testovaci rutina hlasi zbytecne chyby.

Budoucnost

Planuje se implementovat schopnosti jako Freezing nebo ikonifikace. Pro tohle je Snooping idealni. Autorum instalacek se doporucuje zkouset jejich produkty se Snoop pro budouci kompatibilitu.

Requirements

Pro Snoop mod je vyzadovano vlastnit MMU, se kterym umi WHDLoad pracovat (na 68030 je ho treba zapnout)

Omezeni