interrupts.hh revision 5133:a88763dd4a84
110037SARM gem5 Developers/*
210037SARM gem5 Developers * Copyright (c) 2007 The Hewlett-Packard Development Company
310037SARM gem5 Developers * All rights reserved.
410037SARM gem5 Developers *
510037SARM gem5 Developers * Redistribution and use of this software in source and binary forms,
610037SARM gem5 Developers * with or without modification, are permitted provided that the
710037SARM gem5 Developers * following conditions are met:
810037SARM gem5 Developers *
910037SARM gem5 Developers * The software must be used only for Non-Commercial Use which means any
1010037SARM gem5 Developers * use which is NOT directed to receiving any direct monetary
1110037SARM gem5 Developers * compensation for, or commercial advantage from such use.  Illustrative
1210037SARM gem5 Developers * examples of non-commercial use are academic research, personal study,
1310037SARM gem5 Developers * teaching, education and corporate research & development.
1410037SARM gem5 Developers * Illustrative examples of commercial use are distributing products for
1510037SARM gem5 Developers * commercial advantage and providing services using the software for
1610037SARM gem5 Developers * commercial advantage.
1710037SARM gem5 Developers *
1810037SARM gem5 Developers * If you wish to use this software or functionality therein that may be
1910037SARM gem5 Developers * covered by patents for commercial use, please contact:
2010037SARM gem5 Developers *     Director of Intellectual Property Licensing
2110037SARM gem5 Developers *     Office of Strategy and Technology
2210037SARM gem5 Developers *     Hewlett-Packard Company
2310037SARM gem5 Developers *     1501 Page Mill Road
2410037SARM gem5 Developers *     Palo Alto, California  94304
2510037SARM gem5 Developers *
2610037SARM gem5 Developers * Redistributions of source code must retain the above copyright notice,
2710037SARM gem5 Developers * this list of conditions and the following disclaimer.  Redistributions
2810037SARM gem5 Developers * in binary form must reproduce the above copyright notice, this list of
2910037SARM gem5 Developers * conditions and the following disclaimer in the documentation and/or
3010037SARM gem5 Developers * other materials provided with the distribution.  Neither the name of
3110037SARM gem5 Developers * the COPYRIGHT HOLDER(s), HEWLETT-PACKARD COMPANY, nor the names of its
3210037SARM gem5 Developers * contributors may be used to endorse or promote products derived from
3310037SARM gem5 Developers * this software without specific prior written permission.  No right of
3410037SARM gem5 Developers * sublicense is granted herewith.  Derivatives of the software and
3510037SARM gem5 Developers * output created using the software may be prepared, but only for
3610037SARM gem5 Developers * Non-Commercial Uses.  Derivatives of the software may be shared with
3710037SARM gem5 Developers * others provided: (i) the others agree to abide by the list of
3810037SARM gem5 Developers * conditions herein which includes the Non-Commercial Use restrictions;
3910037SARM gem5 Developers * and (ii) such Derivatives of the software include the above copyright
4010037SARM gem5 Developers * notice to acknowledge the contribution from this software where
4110037SARM gem5 Developers * applicable, this list of conditions and the disclaimer below.
4210037SARM gem5 Developers *
4310037SARM gem5 Developers * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
4410037SARM gem5 Developers * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
4510037SARM gem5 Developers * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
4610037SARM gem5 Developers * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
4710037SARM gem5 Developers * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
4810037SARM gem5 Developers * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
4910037SARM gem5 Developers * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
5010037SARM gem5 Developers * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
5110037SARM gem5 Developers * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
5210037SARM gem5 Developers * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
5310037SARM gem5 Developers * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5410037SARM gem5 Developers *
5510037SARM gem5 Developers * Authors: Gabe Black
5610037SARM gem5 Developers */
5710037SARM gem5 Developers
5810037SARM gem5 Developers#ifndef __ARCH_X86_INTERRUPTS_HH__
5910037SARM gem5 Developers#define __ARCH_X86_INTERRUPTS_HH__
6010037SARM gem5 Developers
6110037SARM gem5 Developers#include "arch/x86/faults.hh"
6210037SARM gem5 Developers#include "cpu/thread_context.hh"
6310037SARM gem5 Developers
6410037SARM gem5 Developersnamespace X86ISA
6510037SARM gem5 Developers{
6610037SARM gem5 Developers
6710037SARM gem5 Developersclass Interrupts
6810037SARM gem5 Developers{
6910037SARM gem5 Developers  public:
7010037SARM gem5 Developers    Interrupts()
7110037SARM gem5 Developers    {
7210037SARM gem5 Developers        clear_all();
7310037SARM gem5 Developers    }
7410037SARM gem5 Developers
7510037SARM gem5 Developers    int InterruptLevel(uint64_t softint)
7610037SARM gem5 Developers    {
7710037SARM gem5 Developers        panic("Interrupts::InterruptLevel unimplemented!\n");
7810037SARM gem5 Developers        return 0;
7910037SARM gem5 Developers    }
8010037SARM gem5 Developers
8110037SARM gem5 Developers    void post(int int_num, int index)
8210037SARM gem5 Developers    {
8310037SARM gem5 Developers        panic("Interrupts::post unimplemented!\n");
8410037SARM gem5 Developers    }
8510037SARM gem5 Developers
8610037SARM gem5 Developers    void clear(int int_num, int index)
8710037SARM gem5 Developers    {
8810037SARM gem5 Developers        panic("Interrupts::clear unimplemented!\n");
8910037SARM gem5 Developers    }
9010037SARM gem5 Developers
9110037SARM gem5 Developers    void clear_all()
9210037SARM gem5 Developers    {
9310037SARM gem5 Developers        warn("Interrupts::clear_all unimplemented!\n");
9410037SARM gem5 Developers    }
9510037SARM gem5 Developers
9610037SARM gem5 Developers    bool check_interrupts(ThreadContext * tc) const
9710037SARM gem5 Developers    {
9810037SARM gem5 Developers        panic("Interrupts::check_interrupts unimplemented!\n");
9910037SARM gem5 Developers        return false;
10010037SARM gem5 Developers    }
10110037SARM gem5 Developers
10210037SARM gem5 Developers    Fault getInterrupt(ThreadContext * tc)
10310037SARM gem5 Developers    {
10410037SARM gem5 Developers        panic("Interrupts::getInterrupt unimplemented!\n");
10510037SARM gem5 Developers        return NoFault;
10610037SARM gem5 Developers    }
10710037SARM gem5 Developers
10810037SARM gem5 Developers    void updateIntrInfo(ThreadContext * tc)
10910037SARM gem5 Developers    {
11010037SARM gem5 Developers        panic("Interrupts::updateIntrInfo unimplemented!\n");
11110037SARM gem5 Developers    }
11210037SARM gem5 Developers
11310037SARM gem5 Developers    uint64_t get_vec(int int_num)
11410037SARM gem5 Developers    {
11510037SARM gem5 Developers        panic("Interrupts::get_vec unimplemented!\n");
11610037SARM gem5 Developers        return 0;
11710037SARM gem5 Developers    }
11810037SARM gem5 Developers
11910037SARM gem5 Developers    void serialize(std::ostream & os)
12010037SARM gem5 Developers    {
12110037SARM gem5 Developers        panic("Interrupts::serialize unimplemented!\n");
12210037SARM gem5 Developers    }
12310037SARM gem5 Developers
12410037SARM gem5 Developers    void unserialize(Checkpoint * cp, const std::string & section)
12510037SARM gem5 Developers    {
12610037SARM gem5 Developers        panic("Interrupts::unserialize unimplemented!\n");
12710037SARM gem5 Developers    }
12810037SARM gem5 Developers};
12910037SARM gem5 Developers
13010037SARM gem5 Developers};
13110037SARM gem5 Developers
13210037SARM gem5 Developers#endif // __ARCH_X86_INTERRUPTS_HH__
13310037SARM gem5 Developers