PowerBlocks SDK
 
Loading...
Searching...
No Matches
exceptions.h File Reference

Handles System Exceptions. More...

#include <stdint.h>

Go to the source code of this file.

Classes

struct  exception_context_t
 Pointer to the stack frame of the saved context during interrupts. More...
 

Macros

#define EXCEPTION_IRQ_COUNT   15
 Number of IRQ bits on the system.
 
#define EXCEPTION_PPC_IRQ   (*(volatile uint32_t*)0xcd000030)
 Access to Holywoods Interrupt Controller Flags.
 
#define EXCEPTION_PPC_IRQ_MASK   (*(volatile uint32_t*)0xcd000034)
 

Typedefs

typedef void(* exception_irq_handler_t) (exception_irq_type_t irq)
 Function pointer to handle irq exceptions.
 

Enumerations

enum  exception_irq_type_t {
  EXCEPTION_IRQ_TYPE_GP_RUNTIME , EXCEPTION_IRQ_TYPE_RESET_SWITCH , EXCEPTION_IRQ_TYPE_DVD , EXCEPTION_IRQ_TYPE_SERIAL ,
  EXCEPTION_IRQ_TYPE_EXI , EXCEPTION_IRQ_TYPE_STREAMING , EXCEPTION_IRQ_TYPE_DSP , EXCEPTION_IRQ_TYPE_MEMORY ,
  EXCEPTION_IRQ_TYPE_VIDEO , EXCEPTION_IRQ_TYPE_PE_TOKEN , EXCEPTION_IRQ_TYPE_PE_FINISH , EXCEPTION_IRQ_TYPE_FIFO ,
  EXCEPTION_IRQ_TYPE_DEBUGGER , EXCEPTION_IRQ_TYPE_HSP , EXCEPTION_IRQ_TYPE_IPC
}
 Types of IRQs during external exceptions. More...
 

Functions

void exceptions_install_vector ()
 Installs the exception vector into the CPU.
 
void exceptions_install_irq (exception_irq_handler_t handler, exception_irq_type_t type)
 Registers an interrupt handler for an IRQ.
 
void exception_reset (exception_context_t *context)
 
void exception_machine_check (exception_context_t *context)
 
void exception_dsi (exception_context_t *context)
 
void exception_isi (exception_context_t *context)
 
void exception_external (exception_context_t *context)
 
void exception_alignment (exception_context_t *context)
 
void exception_program (exception_context_t *context)
 
void exception_fpu_unavailable (exception_context_t *context)
 
void exception_decrementer (exception_context_t *context)
 
void exception_syscall (exception_context_t *context)
 
void exceptions_start_first_task ()
 

Variables

int32_t exception_isr_context_switch_needed
 Call the context switch at the end of the ISR if true.
 

Detailed Description

Handles System Exceptions.

Handles system exceptions interrupt vector table. This includes interrupts. (asynchronous exceptions)

Author
Samuel Fitzsimons (rainbain)
Date
2025 @license MIT (see LICENSE file)

Macro Definition Documentation

◆ EXCEPTION_IRQ_COUNT

#define EXCEPTION_IRQ_COUNT   15

Number of IRQ bits on the system.

Number of IRQ bits on the system.

◆ EXCEPTION_PPC_IRQ

#define EXCEPTION_PPC_IRQ   (*(volatile uint32_t*)0xcd000030)

Access to Holywoods Interrupt Controller Flags.

There appears to be another interrupt controller inside of hollywood added on the Wii.

This is needed for acknowledging interrupts through it.

Typedef Documentation

◆ exception_irq_handler_t

typedef void(* exception_irq_handler_t) (exception_irq_type_t irq)

Function pointer to handle irq exceptions.

Function pointer to handle irq exceptions. Use exceptions_install_irq to set it.

Parameters
irqThe IRQ type its handling.

Enumeration Type Documentation

◆ exception_irq_type_t

Types of IRQs during external exceptions.

Types of IRQs during external exceptions retrievd from the processor interface. Also used to enable/disable interrupts.

Function Documentation

◆ exceptions_install_irq()

void exceptions_install_irq ( exception_irq_handler_t handler,
exception_irq_type_t type )
extern

Registers an interrupt handler for an IRQ.

Registers an interrupt handler using a IRQ type

◆ exceptions_install_vector()

void exceptions_install_vector ( )
extern

Installs the exception vector into the CPU.

Installs the exception vector into the CPU. Called during system_initialize as part of start.s.

Assumes interrupts to be disabled when you do this.

Variable Documentation

◆ exception_isr_context_switch_needed

int32_t exception_isr_context_switch_needed
extern

Call the context switch at the end of the ISR if true.

Call the context switch at the end of the ISR if true. Usually used along side xSemaphoreGiveFromISR such that awoken task are switched into when a ISR wakes a task.