[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] This patch remove the obsolete ioapic code on qemu device model side.



# HG changeset patch
# User kaf24@xxxxxxxxxxxxxxxxxxxx
# Node ID 63aeaa2152d81f47fb76e1fd73359e52e89da331
# Parent  9bb7a75f120fcd7db6b9e9dd1bc3700701168ada
This patch remove the obsolete ioapic code on qemu device model side.

Signed-off-by: Yunhong Jiang <yunhong.jiang@xxxxxxxxx>

diff -r 9bb7a75f120f -r 63aeaa2152d8 tools/ioemu/hw/ioapic.c
--- a/tools/ioemu/hw/ioapic.c   Mon Nov  7 15:36:27 2005
+++ /dev/null   Mon Nov  7 15:37:58 2005
@@ -1,704 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-//
-//  Copyright (C) 2001  MandrakeSoft S.A.
-//
-//    MandrakeSoft S.A.
-//    43, rue d'Aboukir
-//    75002 Paris - France
-//    http://www.linux-mandrake.com/
-//    http://www.mandrakesoft.com/
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2 of the License, or (at your option) any later version.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-
-#include "vl.h"
-#include "ioapic.h"
-
-#ifdef __OS
-#undef __OS
-#endif
-#ifdef __i386__
-#define __OS   "l"
-#else
-#define __OS "q"
-#endif
-#define ADDR (*(volatile long *) addr)
-
-#ifdef IOAPIC_DEBUG
-#define IOAPIC_LOG(a...) fprintf(logfile, ##a)
-#else
-#define IOAPIC_LOG(a...)
-#endif
-
-static IOAPICState *ioapic;
-
-#define IOAPIC_ERR(a...) fprintf(logfile, ##a)
-static __inline__ int test_and_set_bit(long nr, volatile void * addr)
-{
-       long oldbit;
-
-       __asm__ __volatile__( 
-               "bts"__OS" %2,%1\n\tsbb"__OS" %0,%0"
-               :"=r" (oldbit),"=m" (ADDR)
-               :"Ir" (nr) : "memory");
-       return oldbit;
-}
-
-static __inline__ int test_and_clear_bit(long nr, volatile void * addr)
-{
-       long oldbit;
-
-       __asm__ __volatile__( LOCK_PREFIX
-               "btr"__OS" %2,%1\n\tsbb"__OS" %0,%0"
-               :"=r" (oldbit),"=m" (ADDR)
-               :"dIr" (nr) : "memory");
-       return oldbit;
-}
-
-static __inline__ void clear_bit(long nr, volatile void * addr)
-{
-       __asm__ __volatile__( 
-               "btr"__OS" %1,%0"
-               :"=m" (ADDR)
-               :"Ir" (nr));
-}
-
-static inline
-void get_shareinfo_apic_msg(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_MSG_LOCK, &share_info->vl_state)){};
-}
-
-static inline
-void put_shareinfo_apic_msg(vlapic_info *share_info){
-    clear_bit(VL_STATE_MSG_LOCK, &share_info->vl_state);
-}
-static inline
-void get_shareinfo_eoi(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_EOI_LOCK, &share_info->vl_state)){};
-}
-
-static inline
-void put_shareinfo_eoi(vlapic_info *share_info){
-    clear_bit(VL_STATE_EOI_LOCK, &share_info->vl_state);
-}
-
-
-static inline
-void get_shareinfo_ext(vlapic_info *share_info){
-    while(test_and_set_bit(VL_STATE_EXT_LOCK, &share_info->vl_state));
-}
-
-static inline
-void put_shareinfo_ext(vlapic_info *share_info){
-    clear_bit(VL_STATE_EXT_LOCK, &share_info->vl_state);
-}
-
-
-static __inline__ int test_bit(int nr, uint32_t value){
-    return value & (1 << nr);
-}
-
-static void ioapic_enable(IOAPICState *s, uint8_t enable)
-{
-    if (!enable ^ IOAPICEnabled(s)) return;
-    if(enable)
-        s->flags |= IOAPIC_ENABLE_FLAG;
-    else
-        s->flags &= ~IOAPIC_ENABLE_FLAG;
-}
-
-#ifdef IOAPIC_DEBUG
-static void
-ioapic_dump_redir(IOAPICState *s, uint8_t entry)
-{
-    if (!s)
-        return;
-
-    RedirStatus redir = s->redirtbl[entry];
-
-    fprintf(logfile, "entry %x: "
-      "vector %x deliver_mod %x destmode %x delivestatus %x "
-      "polarity %x remote_irr %x trigmod %x mask %x dest_id %x\n",
-      entry,
-      redir.RedirForm.vector, redir.RedirForm.deliver_mode,
-      redir.RedirForm.destmode, redir.RedirForm.delivestatus,
-      redir.RedirForm.polarity, redir.RedirForm.remoteirr,
-      redir.RedirForm.trigmod, redir.RedirForm.mask,
-      redir.RedirForm.dest_id);
-}
-
-static void
-ioapic_dump_shareinfo(IOAPICState *s , int number)
-{
-    if (!s || !s->lapic_info[number])
-        return;
-    vlapic_info *m = s->lapic_info[number];
-    IOAPIC_LOG("lapic_info %x : "
-      "vl_lapic_id %x vl_logical_dest %x vl_dest_format %x vl_arb_id %x\n",
-      number, m->vl_lapic_id, m->vl_logical_dest, m->vl_dest_format, 
m->vl_arb_id );
-}
-#endif
-
-static void
-ioapic_save(QEMUFile* f,void* opaque)
-{
-    IOAPIC_ERR("no implementation for ioapic_save\n");
-}
-
-static
-int ioapic_load(QEMUFile* f,void* opaque,int version_id)
-{
-    IOAPIC_ERR("no implementation for ioapic_load\n");
-    return 0;
-}
-
-uint32_t
-ioapic_mem_readb(void *opaque, target_phys_addr_t addr)
-{
-    IOAPIC_ERR("ioapic_mem_readb\n");
-    return 0;
-}
-
-uint32_t
-ioapic_mem_readw(void *opaque, target_phys_addr_t addr)
-{
-    IOAPIC_ERR("ioapic_mem_readw\n");
-    return 0;
-}
-
-static
-void ioapic_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPIC_ERR("ioapic_mem_writeb\n");
-}
-
-static
-void ioapic_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPIC_ERR("ioapic_mem_writew\n");
-}
-
-static
-uint32_t ioapic_mem_readl(void *opaque, target_phys_addr_t addr)
-{
-    unsigned short ioregsel;
-    IOAPICState *s = opaque;
-    uint32_t    result = 0;
-    uint32_t    redir_index = 0;
-    uint64_t    redir_content = 0;
-
-    IOAPIC_LOG("apic_mem_readl addr %x\n", addr);
-    if (!s){
-        IOAPIC_ERR("null pointer for apic_mem_readl\n");
-        return result;
-    }
-
-    addr &= 0xff;
-    if(addr == 0x00){
-        result = s->ioregsel;
-        return result;
-    }else if (addr != 0x10){
-        IOAPIC_ERR("apic_mem_readl address error\n");
-        return result;
-    }
-
-    ioregsel = s->ioregsel;
-
-    switch (ioregsel){
-        case IOAPIC_REG_APIC_ID:
-            result = ((s->id & 0xf) << 24);
-            break;
-        case IOAPIC_REG_VERSION:
-            result = ((((IOAPIC_NUM_PINS-1) & 0xff) << 16)  
-                     | (IOAPIC_VERSION_ID & 0x0f));
-            break;
-        case IOAPIC_REG_ARB_ID:
-            //FIXME
-            result = ((s->id & 0xf) << 24);
-            break;
-        default:
-            redir_index = (ioregsel - 0x10) >> 1;
-            if (redir_index >= 0 && redir_index < IOAPIC_NUM_PINS){
-               redir_content = s->redirtbl[redir_index].value;
-               result = (ioregsel & 0x1)?
-                        (redir_content >> 32) & 0xffffffff :
-                        redir_content & 0xffffffff;
-            }else{
-                IOAPIC_ERR(
-                  "upic_mem_readl:undefined ioregsel %x\n",
-                  ioregsel);
-            }
-    }
-    return result;
-}
-
-static
-void ioapic_mem_writel(void *opaque, target_phys_addr_t addr, uint32_t val)
-{
-    IOAPICState *s = opaque;
-    uint32_t redir_index = 0;
-    uint64_t redir_content;
-
-    IOAPIC_LOG("apic_mem_writel addr %x val %x\n", addr, val);
-
-    if (!s){
-        IOAPIC_ERR("apic_mem_writel: null opaque\n");
-        return;
-    }
-
-    addr &= 0xff;
-    if (addr == 0x00){
-        s->ioregsel = val;
-        return;
-    }else if (addr != 0x10){
-        IOAPIC_ERR("apic_mem_writel: unsupported address\n");
-    }
-
-    switch (s->ioregsel){
-        case IOAPIC_REG_APIC_ID:
-            s->id = (val >> 24) & 0xf;
-            break;
-        case IOAPIC_REG_VERSION:
-            IOAPIC_ERR("apic_mem_writel: version register read only\n");
-            break;
-        case IOAPIC_REG_ARB_ID:
-            s->arb_id = val;
-            break;
-        default:
-            redir_index = (s->ioregsel - 0x10) >> 1;
-//            IOAPIC_LOG("apic_mem_write: change redir :index %x before %lx, 
val %x\n", redir_index, s->redirtbl[redir_index].value, val);
-            if (redir_index >= 0 && redir_index < IOAPIC_NUM_PINS){
-                redir_content = s->redirtbl[redir_index].value;
-                if (s->ioregsel & 0x1)
-                   redir_content = (((uint64_t)val & 0xffffffff) << 32) | 
(redir_content & 0xffffffff);
-                else
-                    redir_content = ((redir_content >> 32) << 32) | (val & 
0xffffffff);
-                s->redirtbl[redir_index].value = redir_content;
-            }else {
-                IOAPIC_ERR("apic_mem_writel: error register\n");
-            }
-            //IOAPIC_LOG("after value is %lx\n",  
s->redirtbl[redir_index].value);
-    }
-}
-
-static CPUReadMemoryFunc *ioapic_mem_read[3] = {
-    ioapic_mem_readb,
-    ioapic_mem_readw,
-    ioapic_mem_readl,
-};
-
-static CPUWriteMemoryFunc *ioapic_mem_write[3] = {
-    ioapic_mem_writeb,
-    ioapic_mem_writew,
-    ioapic_mem_writel,
-};
-
-void
-IOAPICReset(IOAPICState *s)
-{
-    int i;
-    if (!s)
-        return ;
-
-    memset(s, 0, sizeof(IOAPICState));
-
-    for (i = 0; i < IOAPIC_NUM_PINS; i++)
-        s->redirtbl[i].RedirForm.mask = 0x1;
-//    IOAPIC_LOG("after Reset %lx\n",  s->redirtbl[0].value);
-}
-
-void
-ioapic_update_config(IOAPICState *s, unsigned long address, uint8_t enable)
-{
-    int ioapic_mem;
-    if (!s)
-       return;
-
-    ioapic_enable(s, enable);
-
-    if (address != s->base_address){
-        ioapic_mem = cpu_register_io_memory(0, ioapic_mem_read, 
ioapic_mem_write, s);
-        cpu_register_physical_memory(address, IOAPIC_MEM_LENGTH, ioapic_mem);
-        s->base_address = ioapic_mem;
-    }
-}
-
-#define direct_intr(mode)   \
-  (mode == VLAPIC_DELIV_MODE_SMI || \
-   mode == VLAPIC_DELIV_MODE_NMI || \
-   mode == VLAPIC_DELIV_MODE_INIT ||\
-   mode == VLAPIC_DELIV_MODE_STARTUP)
-
-int
-ioapic_inj_irq(IOAPICState *s, uint8_t dest, uint8_t vector, uint8_t 
trig_mode, uint8_t delivery_mode)
-{
-    int msg_count;
-    if (!s || !s->lapic_info[dest]){
-        IOAPIC_ERR("ioapic_inj_irq NULL parameter\n");
-        return 0;
-    }
-    IOAPIC_LOG("ioapic_inj_irq %d , trig %d delive mode %d\n",
-      vector, trig_mode, delivery_mode);
-    switch(delivery_mode){
-        case VLAPIC_DELIV_MODE_FIXED:
-        case VLAPIC_DELIV_MODE_LPRI:
-            get_shareinfo_apic_msg(s->lapic_info[dest]);
-            msg_count = s->lapic_info[dest]->apic_msg_count;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].deliv_mode = 
delivery_mode;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].level = trig_mode;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].vector = vector;
-            s->lapic_info[dest]->vl_apic_msg[msg_count].vector = vector;
-            s->lapic_info[dest]->apic_msg_count ++;
-            put_shareinfo_apic_msg(s->lapic_info[dest]);
-            break;
-        case VLAPIC_DELIV_MODE_EXT:
-/*            get_shareinfo_ext(s->lapic_info[dest]);
-            test_and_set_bit(vector, &s->lapic_info[dest]->vl_ext_intr[0]);
-            put_shareinfo_ext(s->lapic_info[dest]);*/
-            IOAPIC_ERR("<ioapic_inj_irq> Ext interrupt\n");
-            return 0;
-        default:
-            IOAPIC_ERR("<ioapic_inj_irq> error delivery mode\n");
-            break;
-    }
-    return 1;
-}
-
-int
-ioapic_match_logical_addr(IOAPICState *s, int number, uint8_t address)
-{
-    if(!s || !s->lapic_info[number]){
-        IOAPIC_ERR("ioapic_match_logical_addr NULL parameter: "
-          "number: %i s %p address %x\n",
-          number, s, address);
-        return 0;
-    }
-    IOAPIC_LOG("ioapic_match_logical_addr number %i address %x\n",
-      number, address);
-
-    if (((s->lapic_info[number]->vl_dest_format >> 28 ) & 0xf) != 0xf) {
-        IOAPIC_ERR("ioapic_match_logical_addr: cluster model not implemented 
still%x"
-          ,s->lapic_info[number]->vl_dest_format);
-#ifdef IOAPIC_DEBUG
-        ioapic_dump_shareinfo(s, number);
-#endif
-        return 0;
-    }
-    return ((address & ((s->lapic_info[number]->vl_logical_dest >> 24) & 
0xff)) != 0);
-}
-
-int
-ioapic_get_apr_lowpri(IOAPICState *s, int number)
-{
-    if(!s || !s->lapic_info[number]){
-        IOAPIC_ERR("ioapic_get_apr_lowpri NULL parameter\n");
-        return 0;
-    }
-    return s->lapic_info[number]->vl_arb_id;
-}
-
-uint32_t
-ioapic_get_delivery_bitmask(IOAPICState *s,
-uint8_t dest, uint8_t dest_mode, uint8_t vector, uint8_t delivery_mode)
-{
-    uint32_t mask = 0;
-    int low_priority = 256, selected = -1, i;
-    fprintf(logfile, "<ioapic_get_delivery_bitmask>: dest %d dest_mode %d"
-      "vector %d del_mode %d, lapic_count %d\n",
-      dest, dest_mode, vector, delivery_mode, s->lapic_count);
-    if (!s) return mask;
-    if (dest_mode == 0) { //Physical mode
-        if ((dest < s->lapic_count) && s->lapic_info[dest])
-            mask = 1 << dest;
-    }
-    else {
-        /* logical destination. call match_logical_addr for each APIC. */
-        if (dest == 0) return 0;
-        for (i=0; i< s->lapic_count; i++) {
-            //FIXME focus one, since no such issue on IPF, shoudl we add it?
-            if ( s->lapic_info[i] && ioapic_match_logical_addr(s, i, dest)){
-                if (delivery_mode != APIC_DM_LOWPRI)
-                    mask |= (1<<i);
-                else {
-                    if (low_priority > ioapic_get_apr_lowpri(s, i)){
-                        low_priority = ioapic_get_apr_lowpri(s, i);
-                        selected = i;
-                    }
-                    fprintf(logfile, "%d low_priority %d apr %d select %d\n",
-                      i, low_priority, ioapic_get_apr_lowpri(s, i), selected);
-                }
-            }
-        }
-        if (delivery_mode == APIC_DM_LOWPRI && (selected != -1)) 
-            mask |= (1<< selected);
-    }
-  return mask;
-}
-
-void
-ioapic_deliver(IOAPICState *s, int irqno){
-    uint8_t dest = s->redirtbl[irqno].RedirForm.dest_id;
-    uint8_t dest_mode = s->redirtbl[irqno].RedirForm.destmode;
-    uint8_t delivery_mode = s->redirtbl[irqno].RedirForm.deliver_mode;
-    uint8_t vector = s->redirtbl[irqno].RedirForm.vector;
-    uint8_t trig_mode = s->redirtbl[irqno].RedirForm.trigmod;
-    uint8_t bit;
-    uint32_t deliver_bitmask; 
-
-    IOAPIC_LOG("IOAPIC deliver: "
-      "dest %x dest_mode %x delivery_mode %x vector %x trig_mode %x\n",
-      dest, dest_mode, delivery_mode, vector, trig_mode);
-
-    deliver_bitmask =
-      ioapic_get_delivery_bitmask(s, dest, dest_mode, vector, delivery_mode);
-
-      IOAPIC_LOG("ioapic_get_delivery_bitmask return %x\n", deliver_bitmask);
-    if (!deliver_bitmask){
-        IOAPIC_ERR("Ioapic deliver, no target on destination\n");
-        return ;
-    }
-
-    switch (delivery_mode){
-        case VLAPIC_DELIV_MODE_FIXED:
-        case VLAPIC_DELIV_MODE_LPRI:
-        case VLAPIC_DELIV_MODE_EXT:
-            break;
-        case VLAPIC_DELIV_MODE_SMI:
-        case VLAPIC_DELIV_MODE_NMI:
-        case VLAPIC_DELIV_MODE_INIT:
-        case VLAPIC_DELIV_MODE_STARTUP:
-        default:
-            IOAPIC_ERR("Not support delivey mode %d\n", delivery_mode);
-            return ;
-    }
-
-    for (bit = 0; bit < s->lapic_count; bit++){
-        if (deliver_bitmask & (1 << bit)){
-            if (s->lapic_info[bit]){
-                ioapic_inj_irq(s, bit, vector, trig_mode, delivery_mode);
-            }
-        }
-    }
-}
-
-static inline int __fls(uint32_t word)
-{
-    int bit;
-    __asm__("bsrl %1,%0"
-      :"=r" (bit)
-      :"rm" (word));
-    return word ? bit : -1;
-}
-
-#if 0
-static __inline__ int find_highest_bit(unsigned long *data, int length){
-    while(length && !data[--length]);
-    return __fls(data[length]) +  32 * length;
-}
-#endif
-int
-ioapic_get_highest_irq(IOAPICState *s){
-    uint32_t irqs;
-    if (!s)
-        return -1;
-    irqs = s->irr & ~s->isr;
-    return __fls(irqs);
-}
-
-
-void
-service_ioapic(IOAPICState *s){
-    int irqno;
-
-    while((irqno = ioapic_get_highest_irq(s)) != -1){
-        IOAPIC_LOG("service_ioapic: highest irqno %x\n", irqno);
-
-        if (!s->redirtbl[irqno].RedirForm.mask)
-            ioapic_deliver(s, irqno);
-
-        if (s->redirtbl[irqno].RedirForm.trigmod == IOAPIC_LEVEL_TRIGGER){
-            s->isr |= (1 << irqno);
-        }
- //       clear_bit(irqno, &s->irr);
-        s->irr &= ~(1 << irqno);
-    }
-}
-
-void
-ioapic_update_irq(IOAPICState *s)
-{
-    s->INTR = 1;
-}
-
-void
-ioapic_set_irq(IOAPICState *s, int irq, int level)
-{
-    IOAPIC_LOG("ioapic_set_irq %x %x\n", irq, level);
-
-    /* Timer interrupt implemented on HV side */
-    if(irq == 0x0) return;
-    if (!s){
-        fprintf(logfile, "ioapic_set_irq null parameter\n");
-        return;
-    }
-    if (!IOAPICEnabled(s) || s->redirtbl[irq].RedirForm.mask)
-        return;
-#ifdef IOAPIC_DEBUG
-    ioapic_dump_redir(s, irq);
-#endif
-    if (irq >= 0 && irq < IOAPIC_NUM_PINS){
-        uint32_t bit = 1 << irq;
-        if (s->redirtbl[irq].RedirForm.trigmod == IOAPIC_LEVEL_TRIGGER){
-            if(level)
-                s->irr |= bit;
-            else
-                s->irr &= ~bit;
-        }else{
-            if(level)
-                /* XXX No irr clear for edge interrupt */
-                s->irr |= bit;
-        }
-    }
-
-    ioapic_update_irq(s);
-}
-
-void
-ioapic_legacy_irq(int irq, int level)
-{
-    ioapic_set_irq(ioapic, irq, level);
-}
-
-static inline int find_highest_bit(uint32_t *data, int length){
-        while(length && !data[--length]);
-            return __fls(data[length]) +  32 * length;
-}
-
-int
-get_redir_num(IOAPICState *s, int vector){
-    int i = 0;
-    if(!s){
-        IOAPIC_ERR("Null parameter for get_redir_num\n");
-        return -1;
-    }
-    for(; i < IOAPIC_NUM_PINS-1; i++){
-        if (s->redirtbl[i].RedirForm.vector == vector)
-            return i;
-    }
-    return -1;
-}
-
-void
-ioapic_update_EOI()
-{
-    int i = 0;
-    uint32_t isr_info ;
-    uint32_t vector;
-    IOAPICState *s = ioapic;
-
-    isr_info = s->isr;
-
-    for (i = 0; i < s->lapic_count; i++){
-        if (!s->lapic_info[i] ||
-          !test_bit(VL_STATE_EOI, s->lapic_info[i]->vl_state))
-            continue;
-        get_shareinfo_eoi(s->lapic_info[i]);
-        while((vector = find_highest_bit((unsigned int 
*)&s->lapic_info[i]->vl_eoi[0],VLAPIC_INT_COUNT_32)) != -1){
-            int redir_num;
-            if ((redir_num = get_redir_num(s, vector)) == -1){
-                IOAPIC_ERR("Can't find redir item for %d EOI \n", vector);
-                continue;
-            }
-            if (!test_and_clear_bit(redir_num, &s->isr)){
-                IOAPIC_ERR("redir %d not set for %d  EOI\n", redir_num, 
vector);
-                continue;
-            }
-            clear_bit(vector, &s->lapic_info[i]->vl_eoi[0]); 
-        }
-        clear_bit(VL_STATE_EOI, &s->lapic_info[i]->vl_state);
-        put_shareinfo_eoi(s->lapic_info[i]);
-    }
-}
-
-
-void
-ioapic_init_apic_info(IOAPICState *s)
-{
-#ifdef IOAPIC_DEBUG
-    fprintf(logfile, "ioapic_init_apic_info\n");
-    if (!s)
-        return;
-#endif
-
-#if 0
-    if (!vio || !(vio->vl_number)){
-        fprintf(logfile, "null vio or o vl number\n");
-        return;
-    }
-
-    for (i = 0; i < MAX_LAPIC_NUM; i++) s->lapic_info[i] = NULL;
-
-    s->lapic_count = vio->vl_number;
-    for (i = 0; i < vio->vl_number; i++)
-        s->lapic_info[i] = vio->vl_info + i;
-#endif
-
-}
-
-void
-ioapic_intack(IOAPICState *s)
-{
-#ifdef IOAPIC_DEBUG
-    if (!s){
-        fprintf(logfile, "ioapic_intack null parameter\n");
-        return;
-    }
-#endif
-    if (!s) s->INTR = 0;
-}
-
-int
-ioapic_has_intr()
-{
-    return ioapic->INTR;
-}
-
-void
-do_ioapic()
-{
-    service_ioapic(ioapic);
-    ioapic_intack(ioapic);
-}
-
-IOAPICState *
-IOAPICInit( )
-{
-    IOAPICState *s;
-
-    s = qemu_mallocz(sizeof(IOAPICState));
-    if (!s){
-        fprintf(logfile, "IOAPICInit: malloc failed\n");
-        return NULL;
-    }
-
-    IOAPICReset(s);
-    ioapic_init_apic_info(s);
-    register_savevm("ioapic", 0, 1, ioapic_save, ioapic_load, s);
-    /* Remove after GFW ready */
-    ioapic_update_config(s, 0xfec00000, 1);
-
-    ioapic = s;
-    return s;
-}
diff -r 9bb7a75f120f -r 63aeaa2152d8 tools/ioemu/hw/ioapic.h
--- a/tools/ioemu/hw/ioapic.h   Mon Nov  7 15:36:27 2005
+++ /dev/null   Mon Nov  7 15:37:58 2005
@@ -1,128 +0,0 @@
-/////////////////////////////////////////////////////////////////////////
-//
-//  Copyright (C) 2001  MandrakeSoft S.A.
-//
-//    MandrakeSoft S.A.
-//    43, rue d'Aboukir
-//    75002 Paris - France
-//    http://www.linux-mandrake.com/
-//    http://www.mandrakesoft.com/
-//
-//  This library is free software; you can redistribute it and/or
-//  modify it under the terms of the GNU Lesser General Public
-//  License as published by the Free Software Foundation; either
-//  version 2 of the License, or (at your option) any later version.
-//
-//  This library is distributed in the hope that it will be useful,
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-//  Lesser General Public License for more details.
-//
-//  You should have received a copy of the GNU Lesser General Public
-//  License along with this library; if not, write to the Free Software
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
-//
-
-#ifndef __IOAPIC_H
-#define __IOAPIC_H
-
-#include <xenctrl.h>
-#include <xen/io/ioreq.h>
-#include <xen/io/vmx_vlapic.h>
-
-#define IOAPIC_NUM_PINS 24
-#define IOAPIC_VERSION_ID 0x11
-#define IOAPIC_LEVEL_TRIGGER 1
-#define APIC_DM_FIXED  0
-#define APIC_DM_LOWPRI 1
-
-
-
-#ifdef CONFIG_SMP
-#define LOCK_PREFIX "lock ; "
-#else
-#define LOCK_PREFIX ""
-#endif
-
-#ifdef __I386__
-#define __OS "q" 
-#define __OP "r" 
-#else
-#define __OS "l"  /* Operation Suffix */
-#define __OP "e"  /* Operand Prefix */
-#endif
-
-#define ADDR (*(volatile long *) addr)
-#if 0
-#endif
-extern void *shared_page;
-extern FILE *logfile;
-#ifdef __BIGENDIAN__
-typedef union RedirStatus
-{
-    uint64_t value;
-    struct {
-        uint8_t dest_id;
-        uint8_t reserved[4];
-        uint8_t reserve:7;
-        uint8_t mask:1;         /* interrupt mask*/
-        uint8_t trigmod:1;
-        uint8_t remoteirr:1;
-        uint8_t polarity:1;
-        uint8_t delivestatus:1;
-        uint8_t destmode:1;
-        uint8_t deliver_mode:3;
-        uint8_t vector;
-    }RedirForm;
-}RedirStatus;
-#else
-typedef union RedirStatus
-{
-    uint64_t value;
-    struct {
-        uint8_t vector;
-        uint8_t deliver_mode:3;
-        uint8_t destmode:1;
-        uint8_t delivestatus:1;
-        uint8_t polarity:1;
-        uint8_t remoteirr:1;
-        uint8_t trigmod:1;
-        uint8_t mask:1;         /* interrupt mask*/
-        uint8_t reserve:7;
-        uint8_t reserved[4];
-        uint8_t dest_id;
-    }RedirForm;
-}RedirStatus;
-#endif
-/*
- * IOAPICState stands for a instance of a IOAPIC
- */
-
-/* FIXME tmp before working with Local APIC */
-#define IOAPIC_MEM_LENGTH 0x100
-#define IOAPIC_ENABLE_MASK 0x0
-#define IOAPIC_ENABLE_FLAG (1 << IOAPIC_ENABLE_MASK)
-#define MAX_LAPIC_NUM 32
-
-struct IOAPICState{
-    uint32_t INTR;
-    uint32_t id;
-    uint32_t arb_id;
-    uint32_t  flags;
-    unsigned long base_address;
-    uint32_t irr;
-    uint32_t isr;           /* This is used for level trigger */
-    uint8_t  vector_irr[256];
-    RedirStatus redirtbl[IOAPIC_NUM_PINS];
-    uint32_t ioregsel;
-    uint32_t lapic_count;
-    vlapic_info *lapic_info[MAX_LAPIC_NUM];
-};
-#define IOAPIC_REG_APIC_ID 0x0
-#define IOAPIC_REG_VERSION 0x1
-#define IOAPIC_REG_ARB_ID  0x2
-#define IOAPICEnabled(s) (s->flags & IOAPIC_ENABLE_FLAG)
-
-typedef struct IOAPICState IOAPICState;
-
-#endif

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.