As interrupções na execução de um processador podem ser causadas internamente ou externamente. As exceções
são causadas internamente, ou pelo usuário.
Quando uma interrupção/exceção ocorre, o fluxo de execução atual é desviado para uma rotina de tratamento
e depois retorna ao fluxo anterior após o devido tratamento da interrupção/exceção, exceto no caso de RESET.
Exemplo:
Fluxo normal > Interrupção > Tratamento > Fluxo normal
Fluxo normal > Exceção > Tratamento > Fluxo normal
A armv4 define um conjunto de vetores de interrupção, assim como em outros processadores, onde ficam
armazenados endereços de rotinas para tratamento.
Nessa arquitetura, 7 vetores de interrupção, chamados de Hard Vectors(HV), são definidos e residem,
por padrão, no intervalo inicial de memória 0x00000000 a 0x000001F. Esses HVs podem ser vistos
abaixo como também com seus respectivos modos de operação.
Tab.1: Hard Vectors - ARM
Hard Vector |
Endereço |
Modo |
Reset |
0x00000000 |
SVC |
Undefined Instruction |
0x00000004 |
UNDEF |
Software Interrupt |
0x00000008 |
SVC |
Prefetch |
0x0000000C |
ABORT |
Data Abort |
0x00000010 |
ABORT |
Address Exception |
0x00000014 |
Reservado |
Interrupt Request |
0x00000018 |
IRQ |
Fast Interrupt Request |
0x0000001C |
FIQ |
Independentemente da interrupção/Exceção, o processador é configurado/setado para o respectivo modo de
operação associado ao Hard Vector, quando ocorre. Os registradores são salvos/restaurados de acordo
com a tabela de modos de operação já vistos.
Dependendo da implementação do processador ARM, os Hard Vector podem residir em outras regiões de memória,
como na região mais alta da memória 0xFFFFFFE0, por exemplo.
Quando uma interrupção das mostradas na tabela acima, os passos seguintes são executados
automaticamente pelo processador:
- R14_modo_exceção <- PC ou PC + 4
- SPSR_modo_exceção <- CPSR
- CPSR[5:0] <- modo_exceção
- CPSR[6] <- Se modo_exceção == Reset or FIQ então 1, senão, sem alteração
- CPSR[7] <- 1
- PC <- hard_vector_exceção
Para retornar para o fluxo de execução, os passos abaixo devem executados:
- O CPSR deve ser restaurado
- PC deve ser restaurado
Mais informações sobre modos e flags, é recomendado visitar a seções
Registradores.