From 90332f30e78bc5c5ae84561338915764743d64fe Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Sun, 22 Jan 2017 20:45:26 +0100 Subject: [PATCH] KA ITS pager notes from Dave Conroy. --- doc/dcg/ETC | 171 ++++++++++++++++++++++++++++++ doc/dcg/PAG-NOTES | 263 ++++++++++++++++++++++++++++++++++++++++++++++ doc/dcg/email | 8 ++ 3 files changed, 442 insertions(+) create mode 100644 doc/dcg/ETC create mode 100644 doc/dcg/PAG-NOTES create mode 100644 doc/dcg/email diff --git a/doc/dcg/ETC b/doc/dcg/ETC new file mode 100644 index 00000000..3d0ac751 --- /dev/null +++ b/doc/dcg/ETC @@ -0,0 +1,171 @@ +ON A KA10 +FORTY => 40 +UUOH => XUUOH + +000040 MUUO SAVE +000041 JSR UUOH + +THIS IS WHAT A UUO DOES +WHEN RUNNING IN THE UUO HANDLER THE FL,,PC OF THE JOB THAT IS +DOING THE UUO IS LYING IN XUUOH + +XUUOH: 0 +UUOH0: SAVE AC'S INTO SHADOW + ... + JRST URET +URET: RESTORE AC'S FROM SHADOW + JRST ULEAVE +ULEAVE: JRST 2,@UUOH + +THIS IS WHAT THE CLOCK DOES +THE CLOCK IS THE THING THAT DOES ALL THE RESCHEDULING +WHEN A JOB IS RUNNING, THE ACS ARE IN THE ACS, AND +(1) THE MOVEM AT CLUSAV HAS AN ABSOLUTE ADDRESS THAT POINTS TO AC17S(U) +(2) THE JRST 2 AT UEXIT HAS AN ABSOLUTE ADDRESS THAT POINTS TO XUUOH ON THE KA (SO THE + UPDATE IS A WASTE) AND AT XUUOH(U) ON THE OTHERS (WHICH ISN'T) +WHEN A JOB ISN'T RUNNING, THE ACS ARE IN AC0S(U) THROUGH AC17S(U), FL,,PC IS IN UPC(U) +THE JOB MAY BE RUNNING IN A UUO, IN WHICH CASE +(1) THE OP/AC/EA FOR THE UUO IS IN ABSOLUTE LOCATION 000040 +(2) THE FL,,PC FOR THE UUO IS IN XUUOH (WHERE JSR IN 41 POINTS, HENCE @41) +(3) THE USER'S UUO ACS ARE IN UUOACS(U) (LOC 0-17 OF XCTR, BECAUSE OF REMAP) +WHEN A JOB IS NOT RUNNING +(1) THE UUO WORD (FROM LOCATION 000040) IS IN SV40(U) +(2) XUUOH IS IN SUUOH(U) +(3) THE USER'S UUO ACS ARE IN UUOACS(U) (LOC 0-17 OF XCTR, BECAUSE OF REMAP) + +ALL MUUOS (AND EXEC MODE LUUOS) ARE PROCESSED BY UUOH (THERE IS A JSR UUOH IN 000041) +ON NON-KA MACHINES THE SYSJOB ALLOWS MUUOS, BUT EVERYONE ELSE BUGCHECKS + +TRAPS ARE PROCESSED AT CODE THAT BEGINS AT CLKB1, INVOKED BY THE APR +(CLK) PI HANDLER TRAPS CAN BE PROCESSED AT LOW PRIORITY BECAUSE THE CLK +PI HANDLER DOES THE CONTEXT SWITCHING, AND THE CHECK FOR TRAPS HAPPENS +BEFORE ANY CONTEXT SWITCHING, SO THE CLK PI HANDLER IS GUARANTEED TO +HAVE INTERRUPTED THE RIGHT JOB (ALTHOUGH BAD THINGS WOULD HAPPEN IF A +HIGHER-PRIORITY PI ROUTINE EVERY SET A TRAP FLAG, SINCE THE TRAP WOULD +HANG AROUND UNTIL THE HIGHER-PRIORITY HANDLER EXITED, AND THEN THE USER +JOB WOULD BE INTERRUPTED, BUT THE JOB ISN'T DOING ANYTHING RELATED TO +THE TRAP) THE CODE IN THE CLK PI HANDLER CALLS ROUTINES LIKE "AROV" +WHICH TURNS OFF BITS IN THE SAVED FLAGS IN CLKBRK, AND SETS SW PI BITS +IN A, WHICH EVENTUALLY GET TRANSFORMED INTO ITS-STYLE SOFTWARE +INTERRUPTS + +THERE ARE USET VARIABLES WITH NAMES LIKE TR1INS AND SUCH ON THE KA, +THESE ARE SOMEWHAT DEGENERATE THE BIG TABLE AT USETL HAS THE TRAP +VARIABLES WITH MODE 2, 2, 0, 0 WHICH MEANS CALL ROUTINE ON READ, AND +ILLEGAL ON WRITE THE READ ROUTINES (URTRnI) SIMPLY READS THE "TRAP +INSTRUCTION" FOR THE KA WHICH IS ALWAYS A 0,,%PIXXX WORD, BECAUSE +POSTING AN INTERRUPT IS THE ONLY THING THAT IS POSSIBLE + +KA10 PAGING ERROR CHECK IS AT CLKB1H + +IF XCTRI DID NOT WHACK DATAI PAG, AND WE DID NOT NEED TO RUN THE ERROR +HANDLER AT HIGH PRIORITY SO THAT THE HIGH PRIORITY HANDLER COULD MOVE +THE RESULT OF THE DATAI PAG TO SOME PLACE IN THE USER VARIABLES, COULD +THE ERROR AND TRAP PI BE RUN AT PI 7 ? + +THE KA IS A LITTLE BIT LIKE THIS +IT'S EQUIVALENT OF BY DATAI PAG IS SPM, WHICH STORES THE MAPS +CLKBRK DOES ONE OF THESE RIGHT AT THE START, INTO UPGML (NULL JOB) OR UPGML(U) (OTHERS) +UPJPC: 0 FAULT ADDRESS,,0 +UPOPC: 0 OLDFL,,OLDPC USED TO TELL IF PC MOVES ? +UPMAR: 0 MAR ADDRESS AND CONDITION +UPQUAN: 0 EXPGNG+1,,0 PE, QUAN +UPDBR1: 0 USER MAP +UPDBR2: 0 USER MAP +UPDBR3: 0 EXEUMP (EXEC MODE UPPER MAP) LOADED WITH EXECMP, BUT IT'S UNDEFINED +UPACP: 0 B KEY, C KEY, AC POINTER LOCATION OF USER 00-17 ? +LATER ON (CLKB1H) CODE THAT DEALS WITH FAULTS LOOKS AT UPQUAN(U) TO +FIGURE OUT WHAT HAPPENED + + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 ++---------------------------------------------------------------------+-+ +| |A| +| |R| +| |E| ++---------------------------------------------------------------------+-+ + +ARE AC Remap Enable + 0 AC Remap Disabled (Reset Value) + 1 AC Remap Enabled + + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 ++---------------------------+-----------------------------------+-------+ +| | A | | +| | R | | +| | B | | ++---------------------------+-----------------------------------+-------+ + +ARB AC Remap Base + Address of 16-word block in physical memory + +The AC remap function, if enabled, provides a special mapping +for virtual addresses 00-17 in both the exec and user virtual address spaces. +If AC remap is enabled (ARE=1), any virtual address in the range +00-17 is mapped into a physical address by combining the base address +in ARB with the low 4 bits of the virtual address. This check happens before +the check if paging is enabled; if ARE=1 and PE=0 then two chunks +of memory can be accessed; a 16-word chunk anywhere in the physical address +space, and locations 20-777777. + +The remap function is done on all virtual addresses in the range +00-17 that make it to PAG. The only way for a program to generate these +addresses is to execute an instruction with a memory address in +this range under an XCTR relocation; if the address is used in an ordinary +way, or is used under an XCTR in a way that does not require +relocation, then the address will be an AC reference, and will not +be delivered to PAG. Addresses generated by ITS will, in +all likelyhood, be user mode addresses, generated by XCTR when the +previous mode flag is set to 1. + +KA XCTR SKIPS ON VIOLATION, JUST LIKE XCTRI, AND THE UPOPC IS USED TO BACK +UP THE PC (DOESN'T DO THE RIGHT THING IF INTERRUPT IS INHIBITED) + +PGLDU HAS A MODE WHICH SAYS WHICH CAN SWITCH BETWEEN AC0S AND UUOACS +IT LOOKS AT %UMSOA AND DECIDES IF RH OF UPACP SHOULD HOLD AC0S(X) OR UUOACS(X) +IF %UMSOA IS 0 WE GET UUOACS(X) +SO WHEN THE CONTEXT SWITCH WRITES SOMETHING INTO THE SHADOW, IT'S ACTUALLY CONTROLLED +BY THIS FIELD (IT'S NOT WRITING INTO LOCATIONS 00-17 OF USER MODE MEMORY) +UMAPS(X) IS NORMALLY 0, SO WHEN PGLDU IS CALLED, IT POINTS UPACP AT UUOACS(X) + +IS UPACP A PHYSICAL ADDRESS OR AN EXEC MODE VIRTUAL ADDRESS ? +STACY REMEMBERS IT AS A PHYSICAL ADDRESS + +CLKBRK: 0 + XCT CLUSAV MOVEM U,AC17S(U), MADE ABSOLUTE + MOVE U,CLKBRK + MOVEM U,CLKBRS + SPM UPGML(U) + MOVEM T,AC16S(U) + BLT REST OF AC'S INTO AC0S-AC17S + MOVE U,USER + MOVE P,CPDLP + ... +SCHED: MOVE T,CLKBRK CLKBRK HOLDS FL,,PC WHILE IN CLK PI + MOVEM T,UPC(U) SAVE IN USER BLOCK + COPY UEXIT- INTO UUO(U)..SUEXND-1(U) SAVE UEXIT AREA +; EFFECTIVELY, THIS COPY IS + MOVE T,XUUOH + MOVEM T,SUUOH(U) +; END EFFECTIVELY + IF SWITCH, SAVE OLD + MOVE T,40 SAVE THE UUO CODE + MOVEM T,SV40(U) + IF SWITCH, LOAD NEW + MOVE T,SV40(U) + MOVEM T,40 RESTORE THE UUO CODE + MOVE T,UPC(U) JOBS FL,,PC TO CLKBRK FOR RETURN + MOEM T,CLKBRK + MOVSI T,UUO(U) RESTORE UEXIT AREA + HRRI T,UEXIT + BLT T,UEXND-1 +; EFFECTIVELY +; THE SWAP OF JRST 2,@XUUOH IS A WASTE ON KA (ON KL/KS IT NEED TO POINT INTO UPT) + MOVEI T,AC17S(U) + HRRM T,CLUSAV MAKE THE MOVEM U,AC17S(U) ABSOLUTE + MOVE T,SUUOH(U) + MOVEM T,XUUOH +; END EFFECTIVELY + RELOAD AC FROM AC0S(U)-AC17S(U) + JRST 12,@CLKBRK diff --git a/doc/dcg/PAG-NOTES b/doc/dcg/PAG-NOTES new file mode 100644 index 00000000..0c948cea --- /dev/null +++ b/doc/dcg/PAG-NOTES @@ -0,0 +1,263 @@ +PAG +=== + +2007-08-21 +---------- + +BECAUSE THE PAGER REPORTS SOFT ERRORS USING PI, IT CANNOT REPORT SOFT +ERRORS THAT HAPPEN WHEN THE PROCESSOR IS RUNNING AT OR ABOVE THE PI +LEVEL USED TO REPORT SOFT ERRORS. ITS WILL REPORT SOFT ERRORS AT CLKLEV +(7), THE PAGER CANNOT REPORT SOFT ERRORS IN ANY PI HANDLER. THIS MEANS +THAT THE "INTERRUPT IN A PI HANDLER" CASE AND THE "ERROR THAT HAPPENS +BETWEEN THE START OF THE SOFT ERROR PI HANDLER AND THE PLACE WHERE THE +SOFT ERROR HANDLER DOES THE DATAI TO SAVE THE STATUS" CASE ARE THE SAME. + +THE SYSTEM DOES NOT HANDLE THESE CASES GRACEFULLY. THE PAGER WILL +CAPTURE THE STATUS, SEND THE SPECIAL SOFT ERROR STATUS BACK ON THE +SYSTEM BUS TO TELL THE PROCESSOR TO FLUSH AND REPLAY, AND POST A PI. THE +PI WILL BE IGNORED, SO THE INSTRUCTION REPLAY, FAIL AGAIN, AND THE +PROCESS WILL REPEAT. THE PROCESSOR WILL BE STUCK IN A LIVE-LOCK, +CONTINUOUSLY FETCHING, FAILING, AND REPLAYING THE OFFENDING INSTRUCTION. +THE ONLY THING THAT CAN BE DONE IS PUSH THE "HLT" BUTTON (STOPPING THE +PROCESSOR DEAD) OR PUSH THE "DDT" BUTTON (WHICH MAKES A LEVEL 1 PI, +WHICH HAS A GOOD CHANCE OF GETTING THE SYSTEM INTO DDT, UNLESS WE ARE +LIVE-LOCKED IN A LEVEL 1 PI HANDLER). + +THIS MIGHT SEEM UGLY, BUT REMEMBER THAT AN INFINITE INDIRECT ADDRESS +LOOP IN A PI HANDLER CAN LIVE-LOCK THE MACHINE AS WELL. + +CONI PAG+0 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| |R|P|A|I| I | +| |E|E|E|R| A | +| | | | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +CONO PAG+0 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| |R|P|A| | I | +| |E|E|E| | A | +| | | | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +RE ROM ENABLE +PE PAGING ENABLE +AE AC REDIRECT ENABLE +IR INTERRUPT REQUEST (REALLY JUST A COPY OF IR IN DATAI PAG+0) +IA INTERRUPT CHANNEL ASSIGNMENT + +RE=1, PE=0, AE=0, IA=0 AT RESET (SET TO DO ROM FETCH FOR INITIAL PC = 20) + +RE ONLY DOES ANYTHING IF PE IS 0. IF RE IS 1 READS IN THE LOW 128KW OF +THE ADDRESS SPACE GO TO ROM, AND WRITES IN THE LOW 128KW OF THE ADDRESS +SPACE GET A HARD ERROR (THE HIGH 128KW IS NORMAL). IF RE IS 0 THEN THE +WHOLE 128+128KW WORDS IS NORMAL). PUTTING THE ROM IN THE LOW END OF THE +ADDRESS SPACE SEEMS BETTER FOR IMPLEMENTING DSKDMP. + +DATAI PAG+0 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +|I|U|W| P | | A | +|R| | | | | | +| | | | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+0 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +|I|U|W| P | | A | +|R| | | | | | +| | | | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +IR INTERRUPT REQUEST; SET TO 1 BY SE UNLESS XCTRI +U SE IN USER MODE +W SE ON WRITE +P P FIELD FROM PTE THAT CAUSED THE SE +A VA THAT CAUSED THE SE + +ALL FIELDS ARE SET TO 0 BY RESET + +DATAI PAG+1 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | A | | +| | R | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+1 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | A | | +| | R | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +ARB AC REDIRECT BASE, PHYSICAL ADDRESS, 16-WORD ALIGNED + +ALL FIELDS ARE SET TO 0 BY RESET + +DATAI PAG+2 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | T | +| | M | +| | R | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+2 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | T | +| | M | +| | R | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +TMR TIME, INCREMENTS AT 4 US RATE IF NOT LEVEL 0 + +ALL FIELDS ARE SET TO 0 BY RESET + +THE QUANTUM TIMER IS AN 18-BIT TIMER THAT INCREMENTS AT A 250 KHZ RATE +(THAT IS, THE 16 MHZ MAIN CLOCK DIVIDED BY 64) ANY TIME THE PROCESSOR IS +RUNNING AT LEVEL 0. IT DOES NOTHING BUT COUNT; THERE ARE NO INTERRUPTS +OR ANYTHING LIKE THAT (THE QUANTUM TIMER IN THE SYSTEMS CONCEPTS ITS +PAGING BOX FOR THE KA10 SEEMS TOM INCLUDE AN INTERRUPT, BUT ITS GOES TO +SOME TROUBLE TO ARRANGE THAT THE INTERRUPT NEVER FIRES). + +THE QUANTUM TIMER IN THE SYSTEMS CONCEPTS ITS PAGING BOX FOR THE KA10 IS +19 BITS WIDE AND INCREMENTS AT 1 MHZ, BUT THE FACT THAT IT INCREMENTS AT +1 MHZ IS NEVER USED; ANY TIME ITS READS THE QUANTUM TIMER IT IMMEDIATELY +SHIFTS THE VALUE IT READS RIGHT BY 2 BITS. THE PDP-10/X QUANTUM TIMER, +WHICH INCREMENTS AT THE DESIRED 4 US RATE, IS ACTUALLY 1 BIT WIDER THAN +IT NEEDS TO BE. + +PUTTING THE 18-BIT QUANTUM TIMER IN THE PAGER MIGHT SEEM A LITTLE +STRANGE, BUT IT REALLY HAS MORE TO DO WITH ITS PAGING THAT WITH THE +PROCESSOR (IT CERTAINLY IS NOT NEEDED IN A TOPS-10 MACHINE). THIS TIMER +HAS TO INCREMENT AT LEVEL 0 TIME, SO THE SYSTEM BUS NEEDS A SIGNAL TO +TELL THE PAGER THAT THE CPU IS AT LEVEL 0; FORTUNATELY THIS SIGNAL IS +ONE THAT A FRONT PANEL WOULD LIKE AS WELL (FOR A "PI IN PROG" LED). + +DATAO PAG+3 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +|I|I|I| | V | +|E|U|S| | A | +| | | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +IE INVALIDATE EXEC MODE +IU INVALIDATE USER MODE +IS INVALIDATE SINGLE TRANSLATION GIVEN VA, OTHERWISE ALL +VA VIRTUAL ADDRESS TO INVALIDATE + +INVALIDATE ONE OR ALL ENTRIES IN THE PAGER'S CACHE. THE IE AND IU BITS +DETERMINE IF THE EXEC SPACE AND/OR THE USER SPACE IS INVALIDATED. THE IS +BIT DETERMINES IF ALL OF THE TRANSLATIONS SHOULD BE INVALIDATED (IS = 0) +OR JUST THE TRANSLATION FOR THE VIRTUAL ADDRESS SPECIEIED BY THE VA +FIELD (IS = 1). + +A SINGLE 1K PAGE AT LOCATION X CAN BE FLUSHED FROM BOTH THE EXEC MODE +AND USER MODE ADDRESS SPACES (THAT IS, A CLRPT CAN BE DONE, ALBEIT ONE +WITH 1K PAGES, WHICH IS WHAT ITS WANTS ANYWAY) WITH DATAO +PAG+3,[700000,,X]. + +DATAI PAG+4 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | E | | +| | L | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+4 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | E | | +| | L | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +ELB EXEC MODE LOSEG PT BASE, PHYSICAL ADDRESS, 64-WORD ALIGNED + +ALL FIELDS ARE SET TO 0 BY RESET + +DATAI PAG+5 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | E | | +| | H | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+5 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | E | | +| | H | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +EHB EXEC MODE HISEG PT BASE, PHYSICAL ADDRESS, 64-WORD ALIGNED + +ALL FIELDS ARE SET TO 0 BY RESET + +DATAI PAG+6 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | U | | +| | L | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+6 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | U | | +| | L | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +ULB USER MODE LOSEG PT BASE, PHYSICAL ADDRESS, 64-WORD ALIGNED + +ALL FIELDS ARE SET TO 0 BY RESET + +DATAI PAG+7 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | U | | +| | H | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +DATAO PAG+7 ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +| | U | | +| | H | | +| | B | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 + +UHB USER MODE HISEG PT BASE, PHYSICAL ADDRESS, 64-WORD ALIGNED + +ALL FIELDS ARE SET TO 0 BY RESET diff --git a/doc/dcg/email b/doc/dcg/email new file mode 100644 index 00000000..792a6a3e --- /dev/null +++ b/doc/dcg/email @@ -0,0 +1,8 @@ +These files are some scribbles I did when I was reverse-engineering +ITS and designing my version of the pager that only did what ITS ended +up needing. + +The text in PAG-NOTES that begins with "THE KA IS A LITTLE BIT LIKE +THIS" is actually describing the block that holds the paging +context (it's described in ITS as 8 variables that need to be together +and in the right order, not as a BLOCK 10 and some offsets).