Class ArchXT_IntCtrl

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class ArchXT_IntCtrl : public InterruptController

Implementation of a Interrupt Controller for XT core series.

Public Functions

explicit ArchXT_IntCtrl(const ArchXT_IntCtrlConfig &config)
virtual bool init(Device &device) override

Virtual method called when the device is initialised. This is where the peripheral can allocate its I/O registers, interrupts or connect signals.

Returns:

boolean indicates the success of all allocations.

virtual void ioreg_write_handler(reg_addr_t addr, const ioreg_write_t &data) override

Virtual method called when the CPU is writing a I/O register allocated by this peripheral. The value has already been written.

Parameters:
  • addr – the register address in I/O space

  • value – the new register content

virtual void cpu_reti() override

Called by the CPU when returning from an ISR (executing a RETI instruction).

The base implementation calls update_irq to determine the next vector to be given to the CPU.

Protected Functions

virtual void cpu_ack_irq(int_vect_t vector) override

Called by the CPU when it acknowledges a vector, i.e. it is about to execute the vector address in the flash.

The base implementation calls the ACK handler of the vector and raise the signal with the “Acknowledged” state.

virtual IRQ_t get_next_irq() const override

Abstract method indicating which vector should be executed next. Architecture specific behaviors can be implemented here to take into account priority arbitration between vectors.

Note

implementations should assume the GIE flag is set.

Returns:

IRQ to be executed next or NO_INTERRUPT

struct vect_info_t

Public Members

int_vect_t vector
int priority