[movitz-cvs] CVS update: movitz/losp/x86-pc/pci.lisp

Frode Vatvedt Fjeld ffjeld at common-lisp.net
Wed Aug 24 07:33:22 UTC 2005


Update of /project/movitz/cvsroot/movitz/losp/x86-pc
In directory common-lisp.net:/tmp/cvs-serv5294

Modified Files:
	pci.lisp 
Log Message:
sync

Date: Wed Aug 24 09:33:22 2005
Author: ffjeld

Index: movitz/losp/x86-pc/pci.lisp
diff -u movitz/losp/x86-pc/pci.lisp:1.11 movitz/losp/x86-pc/pci.lisp:1.12
--- movitz/losp/x86-pc/pci.lisp:1.11	Sun Aug 14 14:15:04 2005
+++ movitz/losp/x86-pc/pci.lisp	Wed Aug 24 09:33:21 2005
@@ -10,7 +10,7 @@
 ;;;; Author:        Frode Vatvedt Fjeld <frodef at acm.org>
 ;;;; Created at:    Sun Dec 14 22:33:42 2003
 ;;;;                
-;;;; $Id: pci.lisp,v 1.11 2005/08/14 12:15:04 ffjeld Exp $
+;;;; $Id: pci.lisp,v 1.12 2005/08/24 07:33:21 ffjeld Exp $
 ;;;;                
 ;;;;------------------------------------------------------------------
 
@@ -294,16 +294,19 @@
 	   (error "Unknown pci-config register: ~S" register))))
 
 (defun pci-device-address-maps (bus device function)
-  (loop for i upfrom (pci-config :base-addr) by 4 repeat 6
+  (loop with io-keys = '(:io :io-2 :io-3 :io-4 :io-5 :io-6)
+      with mem-keys = '(:mem :mem-2 :mem-3 :mem-4 :mem-5 :mem-6)
+      with mem64-keys = '(:mem64 :mem64-2 :mem64-3 :mem64-4 :mem64-5 :mem64-6)
+      for i upfrom (pci-config :base-addr) by 4 repeat 6
       as base = (pci-bios-config-space-dword bus device function i)
-      unless (= 0 base) collect
+      unless (= 0 base) nconc
 	(cond
 	 ((logbitp 0 base)
-	  (cons :io (logand base -4)))
+	  (list (pop io-keys) (logand base -4)))
 	 ((= 1 (ldb (byte 2 1) base))
-	  (cons :mem64 (logand base -16)))
+	  (list (pop mem64-keys) (logand base -16)))
 	 (t
-	  (cons :mem32 (logand base -16))))))
+	  (list (pop mem-keys) (logand base -16))))))
 	    
 (defun scan-pci-bus (bus)
   (loop for device from 0 to 31
@@ -321,7 +324,58 @@
 		       (ldb (byte 24 8) class-rev)
 		       (ldb (byte 8 0) class-rev)
 		       status)
-	       (format *query-io* "    Class:~{ ~@[~A~]~}"
+	       (format *query-io* "    Class:~{~@[ ~A~]~}."
 		       (multiple-value-list (pci-class (ldb (byte 24 8) class-rev))))
-	       (format *query-io* "~S" (pci-device-address-maps bus device 0))))))
+	       (format *query-io* "~@[~{ ~A: #x~X~^,~}.~]"
+		       (pci-device-address-maps bus device 0))))))
   (values))
+
+(defmacro $pci-config (reg)
+  "PCI config header registers for all devices."
+  (or (case reg
+	(:pcir-devvendor #x00)
+	(:pcir-vendor #x00)
+	(:pcir-device #x02)
+	(:pcir-command #x04)
+	(:pcim-cmd-porten #x0001)
+	(:pcim-cmd-memen #x0002)
+	(:pcim-cmd-busmasteren #x0004)
+	(:pcim-cmd-mwricen #x0010)
+	(:pcim-cmd-perrespen #x0040)
+	(:pcim-cmd-serrespen #x0100)
+	(:pcir-status #x06)
+	(:pcim-status-cappresent #x0010)
+	(:pcim-status-66capable #x0020)
+	(:pcim-status-backtoback #x0080)
+	(:pcim-status-perrreport #x0100)
+	(:pcim-status-sel-fast #x0000)
+	(:pcim-status-sel-medimum #x0200)
+	(:pcim-status-sel-slow #x0400)
+	(:pcim-status-sel-mask #x0600)
+	(:pcim-status-stabort #x0800)
+	(:pcim-status-rtabort #x1000)
+	(:pcim-status-rmabort #x2000)
+	(:pcim-status-serr #x4000)
+	(:pcim-status-perr #x8000)
+	(:pcir-revid #x08)
+	(:pcir-progif #x09)
+	(:pcir-subclass #x0a)
+	(:pcir-class #x0b)
+	(:pcir-cachelnsz #x0c)
+	(:pcir-lattimer #x0d)
+	(:pcir-headertype #x0e)
+	(:pcim-mfdev #x80)
+	(:pcir-bist #x0f)
+
+	(:pcir-maps #x10)
+	(:pcir-cardbuscis #x28)
+	(:pcir-subvend-0 #x2c)
+	(:pcir-subdev-0 #x2e)
+	(:pcir-bios #x30)
+	(:pcim-bios-enable #x01)
+	(:pcir-cap-ptr #x34)
+	(:pcir-intline #x3c)
+	(:pcir-intpin #x3d)
+	(:pcir-mingnt #x3e)
+	(:pcir-maxlat #x3f))
+      (error "Unknown $pci-config register ~S." reg)))




More information about the Movitz-cvs mailing list