Annotation of Gnu-Mach/i386/imps/apic.h, revision 1.1.1.1

1.1       root        1: /* 
                      2:  * Copyright (c) 1994 The University of Utah and
                      3:  * the Computer Systems Laboratory at the University of Utah (CSL).
                      4:  * All rights reserved.
                      5:  *
                      6:  * Permission to use, copy, modify and distribute this software is hereby
                      7:  * granted provided that (1) source code retains these copyright, permission,
                      8:  * and disclaimer notices, and (2) redistributions including binaries
                      9:  * reproduce the notices in supporting documentation, and (3) all advertising
                     10:  * materials mentioning features or use of this software display the following
                     11:  * acknowledgement: ``This product includes software developed by the
                     12:  * Computer Systems Laboratory at the University of Utah.''
                     13:  *
                     14:  * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
                     15:  * IS" CONDITION.  THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
                     16:  * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
                     17:  *
                     18:  * CSL requests users of this software to return to [email protected] any
                     19:  * improvements that they make and grant CSL redistribution rights.
                     20:  *
                     21:  *      Author: Bryan Ford, University of Utah CSL
                     22:  */
                     23: #ifndef _IMPS_APIC_
                     24: #define _IMPS_APIC_
                     25: 
                     26: typedef struct ApicReg
                     27: {
                     28:        unsigned r;     /* the actual register */
                     29:        unsigned p[3];  /* pad to the next 128-bit boundary */
                     30: } ApicReg;
                     31: 
                     32: typedef struct ApicIoUnit
                     33: {
                     34:        ApicReg select;
                     35:        ApicReg window;
                     36: } ApicIoUnit;
                     37: #define APIC_IO_UNIT_ID                        0x00
                     38: #define APIC_IO_VERSION                        0x01
                     39: #define APIC_IO_REDIR_LOW(int_pin)     (0x10+(int_pin)*2)
                     40: #define APIC_IO_REDIR_HIGH(int_pin)    (0x11+(int_pin)*2)
                     41: 
                     42: typedef struct ApicLocalUnit
                     43: {
                     44:        ApicReg reserved0;
                     45:        ApicReg reserved1;
                     46:        ApicReg unit_id;
                     47:        ApicReg version;
                     48:        ApicReg reserved4;
                     49:        ApicReg reserved5;
                     50:        ApicReg reserved6;
                     51:        ApicReg reserved7;
                     52:        ApicReg task_pri;
                     53:        ApicReg reservedb;
                     54:        ApicReg reservedc;
                     55:        ApicReg eoi;
                     56:        ApicReg remote;
                     57:        ApicReg logical_dest;
                     58:        ApicReg dest_format;
                     59:        ApicReg spurious_vector;
                     60:        ApicReg isr[8];
                     61:        ApicReg tmr[8];
                     62:        ApicReg irr[8];
                     63:        ApicReg reserved28[8];
                     64:        ApicReg int_command[2];
                     65:        ApicReg timer_vector;
                     66:        ApicReg reserved33;
                     67:        ApicReg reserved34;
                     68:        ApicReg lint0_vector;
                     69:        ApicReg lint1_vector;
                     70:        ApicReg reserved37;
                     71:        ApicReg init_count;
                     72:        ApicReg cur_count;
                     73:        ApicReg reserved3a;
                     74:        ApicReg reserved3b;
                     75:        ApicReg reserved3c;
                     76:        ApicReg reserved3d;
                     77:        ApicReg divider_config;
                     78:        ApicReg reserved3f;
                     79: } ApicLocalUnit;
                     80: 
                     81: 
                     82: /* Address at which the local unit is mapped in kernel virtual memory.
                     83:    Must be constant.  */
                     84: #define APIC_LOCAL_VA  0xc1000000
                     85: 
                     86: #define apic_local_unit (*((volatile ApicLocalUnit*)APIC_LOCAL_VA))
                     87: 
                     88: 
                     89: /* Set or clear a bit in a 255-bit APIC mask register.
                     90:    These registers are spread through eight 32-bit registers.  */
                     91: #define APIC_SET_MASK_BIT(reg, bit) \
                     92:        ((reg)[(bit) >> 5].r |= 1 << ((bit) & 0x1f))
                     93: #define APIC_CLEAR_MASK_BIT(reg, bit) \
                     94:        ((reg)[(bit) >> 5].r &= ~(1 << ((bit) & 0x1f)))
                     95: 
                     96: #endif _IMPS_APIC_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.