Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

apic.h

Go to the documentation of this file.
00001 
00007 /*
00008  *  Copyright (C) 2004 Bregmasoft
00009  *
00010  * This program is free software; you can redistribute it and/or modify it
00011  * under the terms of the GNU General Public License as published by the Free
00012  * Software Foundation; either version 2 of the License, or (at your option)
00013  * any later version.
00014  *
00015  * This program is distributed in the hope that it will be useful, but WITHOUT
00016  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00017  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
00018  * more details.
00019  *
00020  * You should have received a copy of the GNU General Public License along
00021  * with this program; if not, write to the Free Software Foundation, Inc., 59
00022  * Temple Place, Suite 330, Boston, MA 02111-1307 USA
00023  */
00024 #ifndef ZYGOMA_IA32_APIC_H_ 
00025 #define ZYGOMA_IA32_APIC_H_ 
00026 
00027 #include <config.h>
00028 #include <iosfwd>
00029 #include <types.h>
00030 
00031 namespace Zygoma
00032 {
00033   namespace ia32
00034   {
00111     class LocalApic
00112     {
00113     public:
00114       LocalApic();
00115 
00117       u32
00118       id() const;
00119 
00121       u32
00122       version() const;
00123 
00125       u32
00126       maxLVTEntry() const;
00127 
00129       u32
00130       spuriousVector() const;
00131 
00133       bool
00134       isSoftwareEnabled() const;
00135 
00137       void
00138       enable();
00139 
00141       void
00142       setId(u32 id);
00143 
00145       std::ostream&
00146       printStream(std::ostream& ostr) const;
00147 
00148     private:
00149       u32 volatile m_reserved_0000         ZYGOMA_ALIGN(16);
00150       u32 volatile m_reserved_0010         ZYGOMA_ALIGN(16);
00151       u32 volatile m_reg_id                ZYGOMA_ALIGN(16);
00152       u32 volatile m_reg_version           ZYGOMA_ALIGN(16);
00153       u32 volatile m_reserved_0040         ZYGOMA_ALIGN(16);
00154       u32 volatile m_reserved_0050         ZYGOMA_ALIGN(16);
00155       u32 volatile m_reserved_0060         ZYGOMA_ALIGN(16);
00156       u32 volatile m_reserved_0070         ZYGOMA_ALIGN(16);
00157       u32 volatile m_taskPriority          ZYGOMA_ALIGN(16);
00158       u32 volatile m_arbitrationPriority   ZYGOMA_ALIGN(16);
00159       u32 volatile m_processorPriority     ZYGOMA_ALIGN(16);
00160       u32 volatile m_eoi                   ZYGOMA_ALIGN(16);
00161       u32 volatile m_reserved_00c0         ZYGOMA_ALIGN(16);
00162       u32 volatile m_logicalDestination    ZYGOMA_ALIGN(16);
00163       u32 volatile m_destinationFormat     ZYGOMA_ALIGN(16);
00164       u32 volatile m_spuriousInterrupt     ZYGOMA_ALIGN(16);
00165       u32 volatile m_inService_0           ZYGOMA_ALIGN(16);
00166       u32 volatile m_inService_1           ZYGOMA_ALIGN(16);
00167       u32 volatile m_inService_2           ZYGOMA_ALIGN(16);
00168       u32 volatile m_inService_3           ZYGOMA_ALIGN(16);
00169       u32 volatile m_inService_4           ZYGOMA_ALIGN(16);
00170       u32 volatile m_inService_5           ZYGOMA_ALIGN(16);
00171       u32 volatile m_inService_6           ZYGOMA_ALIGN(16);
00172       u32 volatile m_inService_7           ZYGOMA_ALIGN(16);
00173       u32 volatile m_triggerMode_0         ZYGOMA_ALIGN(16);
00174       u32 volatile m_triggerMode_1         ZYGOMA_ALIGN(16);
00175       u32 volatile m_triggerMode_2         ZYGOMA_ALIGN(16);
00176       u32 volatile m_triggerMode_3         ZYGOMA_ALIGN(16);
00177       u32 volatile m_triggerMode_4         ZYGOMA_ALIGN(16);
00178       u32 volatile m_triggerMode_5         ZYGOMA_ALIGN(16);
00179       u32 volatile m_triggerMode_6         ZYGOMA_ALIGN(16);
00180       u32 volatile m_triggerMode_7         ZYGOMA_ALIGN(16);
00181       u32 volatile m_interruptRequest_0    ZYGOMA_ALIGN(16);
00182       u32 volatile m_interruptRequest_1    ZYGOMA_ALIGN(16);
00183       u32 volatile m_interruptRequest_2    ZYGOMA_ALIGN(16);
00184       u32 volatile m_interruptRequest_3    ZYGOMA_ALIGN(16);
00185       u32 volatile m_interruptRequest_4    ZYGOMA_ALIGN(16);
00186       u32 volatile m_interruptRequest_5    ZYGOMA_ALIGN(16);
00187       u32 volatile m_interruptRequest_6    ZYGOMA_ALIGN(16);
00188       u32 volatile m_interruptRequest_7    ZYGOMA_ALIGN(16);
00189       u32 volatile m_errorStatus           ZYGOMA_ALIGN(16);
00190       u32 volatile m_reserved_0290         ZYGOMA_ALIGN(16);
00191       u32 volatile m_reserved_02a0         ZYGOMA_ALIGN(16);
00192       u32 volatile m_reserved_02b0         ZYGOMA_ALIGN(16);
00193       u32 volatile m_reserved_02c0         ZYGOMA_ALIGN(16);
00194       u32 volatile m_reserved_02d0         ZYGOMA_ALIGN(16);
00195       u32 volatile m_reserved_02e0         ZYGOMA_ALIGN(16);
00196       u32 volatile m_reserved_02f0         ZYGOMA_ALIGN(16);
00197       u32 volatile m_interruptCommand_00   ZYGOMA_ALIGN(16);
00198       u32 volatile m_interruptCommand_32   ZYGOMA_ALIGN(16);
00199       u32 volatile m_lvtTimer              ZYGOMA_ALIGN(16);
00200       u32 volatile m_lvtThermalSensor      ZYGOMA_ALIGN(16);
00201       u32 volatile m_lvtPerformanceMonitor ZYGOMA_ALIGN(16);
00202       u32 volatile m_lvtLINT0              ZYGOMA_ALIGN(16);
00203       u32 volatile m_lvtLINT1              ZYGOMA_ALIGN(16);
00204       u32 volatile m_lvtError              ZYGOMA_ALIGN(16);
00205       u32 volatile m_timerInitialCount     ZYGOMA_ALIGN(16);
00206       u32 volatile m_timerCurrentCount     ZYGOMA_ALIGN(16);
00207       u32 volatile m_reserved_3a0[6]       ZYGOMA_ALIGN(16);
00208       u32 volatile m_timerDivide           ZYGOMA_ALIGN(16);
00209       u32 volatile m_reserved_03f0         ZYGOMA_ALIGN(16);
00210     };
00211 
00213     inline std::ostream&
00214     operator<<(std::ostream& ostr, LocalApic& apic)
00215     {
00216       return apic.printStream(ostr);
00217     }
00218 
00219   } // namespace ia32
00220 } // namespace Zygoma
00221 
00222 #endif // ZYGOMA_IA32_APIC_H_ 

Generated on Fri Sep 2 10:44:36 2005 for zygoma by doxygen 1.4.2