;;; -*- Mode:LISP; Package:METER; Base:8; Readtable:CL -*- (defvar *page-trace-buffer* (si:make-wireable-array 128. 'art-32b nil)) (defun turn-on-page-trace () (si:%wire-structure *page-trace-buffer*) (si:%page-trace *page-trace-buffer*)) (defun turn-off-page-trace () (si:%page-trace nil) (si:%unwire-structure *page-trace-buffer*)) ; Microsecond clock value ; Virtual address ; Miscellany: ; bit 31: swap-out flag, ; bit 30: stack-group-switch flag ; bit 29: transport flag ; bit 28: scavenge flag ; bits 15-0: micro-pc ; Current function (just randomly picks up @M-AP, hopefully reasonable) (defun print-page-trace () (labels ((aref-32 (array index) (let ((data-offset (+ index (si:array-data-offset array)))) (dpb (%p-ldb-offset (byte 16. 16.) array data-offset) (byte 16. 16.) (%p-ldb-offset (byte 16. 0) array data-offset))))) (do ((i 0 (+ i 4))) ((= i (array-length *page-trace-buffer*))) (format t "~&~10d ~15o ~15o ~15o" (aref-32 *page-trace-buffer* (* i 4)) (aref-32 *page-trace-buffer* (+ 4 (* i 4))) (aref-32 *page-trace-buffer* (+ 8 (* i 4))) (aref-32 *page-trace-buffer* (+ 12. (* i 4)))))))