Exemplo n.º 1
0
ARMKernel::ARMKernel(ARMInterrupt *intr,
                     CoreInfo *info)
    : Kernel(info)
{
    NOTICE("");

    // Setup interrupt callbacks
    m_intControl = intr;
    intr->install(ARMInterrupt::UndefinedInstruction, undefinedInstruction);
    intr->install(ARMInterrupt::SoftwareInterrupt, trap);
    intr->install(ARMInterrupt::PrefetchAbort, prefetchAbort);
    intr->install(ARMInterrupt::DataAbort, dataAbort);
    intr->install(ARMInterrupt::Reserved, reserved);
    intr->install(ARMInterrupt::IRQ, interrupt);
    intr->install(ARMInterrupt::FIQ, interrupt);

    // Enable clocks and irqs
    m_timer = &m_bcmTimer;
    m_bcmTimer.setFrequency( 250 ); /* trigger timer interrupts at 250Hz (clock runs at 1Mhz) */
    m_intControl->enable(BCM_IRQ_SYSTIMERM1);

    // Set ARMCore modes
    ARMControl ctrl;
    ctrl.unset(ARMControl::AlignmentCorrect);
    ctrl.set(ARMControl::AlignmentFaults);
    ctrl.unset(ARMControl::BigEndian);
}
Exemplo n.º 2
0
ARMKernel::ARMKernel(Memory::Range kernel,
                     Memory::Range memory,
                     ARMInterrupt *intr,
                     Address tags)
    : Kernel(kernel, memory), m_tags(tags)
{    
    NOTICE("");

    m_intControl = intr;
    intr->install(ARMInterrupt::UndefinedInstruction, undefinedInstruction);
    intr->install(ARMInterrupt::SoftwareInterrupt, trap);
    intr->install(ARMInterrupt::PrefetchAbort, prefetchAbort);
    intr->install(ARMInterrupt::DataAbort, dataAbort);
    intr->install(ARMInterrupt::Reserved, reserved);
    intr->install(ARMInterrupt::IRQ, interrupt);
    intr->install(ARMInterrupt::FIQ, interrupt);

    // Enable clocks and irqs
    m_timer.setInterval( 250 ); /* trigger timer interrupts at 250Hz (clock runs at 1Mhz) */
    m_intControl->enable(BCM_IRQ_SYSTIMERM1);

    // Set ARMCore modes
    ARMControl ctrl;
    ctrl.unset(ARMControl::AlignmentCorrect);
    ctrl.set(ARMControl::AlignmentFaults);
    ctrl.unset(ARMControl::BigEndian);
}