Link de section avec alignement.
Bonjour.
C'est au sujet d'un code C/assembleur pour microcontroleur (AVR32).
Le code assembleur définit une sorte de vecteur d'exceptions avec une exigence d'alignement.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| .section .exception, "ax", @progbits
.balign 0x200
.global _evba
.type _evba, @function
_evba:
.org 0x000
_handle_Unrecoverable_Exception:
rjmp $
.org 0x004
_handle_TLB_Multiple_Hit:
rjmp $
.....
.org 0x100
// Supervisor Call.
_handle_Supervisor_Call:
rjmp $ |
Les exceptions relatives à des intéruptions sont trouvées d'après la formule : (EVBA | event_handler_offset), event_handler_offset étant une valeur renseignée dans un registre du controleur d'intéruptions.
Je définis donc mon handler d'interruption de la manière suivante :
Code:
1 2 3 4 5 6
| __attribute__ ((__interrupt__))
__attribute__ ((section (".exception")))
void _default_interrupt_handler(void)
{
while(1) {}
} |
Après le link, j'obtiens la disposition suivante :
Code:
1 2 3 4 5
| .exception 0x0000000080004c00 0x208
.exception 0x0000000080004c00 0x200 exception.o
0x0000000080004c00 _evba
.exception 0x0000000080004e00 0x8 main.o
0x0000000080004e00 _default_interrupt_handler |
Le linker m'a décalé la fonction à un multiple de l'alignement du vecteur d'exceptions.
Ma question est donc, comment "placer" les fonctions directement à la suite du vecteur d'exceptions, ou simplement définir sa taille ?
Merci pour votre aide.