30

?? Un handler d'interruption ne doit modifier aucun registre, y compris SR.

J'ai fait le calcul et je sais que c'est négligeable, même en inlinant les sous-fonctions éventuelles du handler d'INT1.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

31

Donc, en fait, INT_HANDLER est défini comme les DECLARE_HANDLE( xxxx ) de Windows:
typedef struct HBITMAP__ { int unused; } *HBITMAP;

et donc, une fonction handler d'interruption n'est même pas définie comme une fonction ayant des __attribute__ spéciaux, si j'ai bien compris la doc?
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

32

Ben, regarde intr.h... Je ne suis pas sûr que Kevin ait déjà modifié les définitions pour utiliser __attribute__((__interrupt_handler__)).
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

33

Lionel Debroux :
?? Un handler d'interruption ne doit modifier aucun registre, y compris SR.

triso
Mais la convention d'appel interdit à la fonction définie par l'utilisateur de détruire autre chose que d0-d2/a0-a1, donc pas besoin de restaurer autre chose que ces registres-là (et SR, évidemment)...


Link> oui ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

34

Pollux
:
Lionel Debroux :
?? Un handler d'interruption ne doit modifier aucun registre, y compris SR.

triso
Mais la convention d'appel interdit à la fonction définie par l'utilisateur de détruire autre chose que d0-d2/a0-a1, donc pas besoin de restaurer autre chose que ces registres-là (et SR, évidemment)...

Convention d'appel oui, mais pour une int non

Suppose que tu utilise a0 dans ton prog, les int hard (a moins de les desactiver) tu ne les controles pas et peuvent s'activer n'importe quand dans ton prog. Et si elle modifie a0 et ne le restore pas, toi a la fin tu va te retrouver avec un a0 completement foireux et tu sauras meme pas pourquoi
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

35

triroll
donc pas besoin de restaurer autre chose que ces registres-là
(et SR, évidemment)...


Lionel parle de restaurer 15 registres, alors qu'il n'y a besoin d'en restaurer que 5 (je ne parle pas d'en restaurer aucun triso)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

36

triso

le plsu simple etant (encore) de ne sauver/restaurer que les registres modifié mais bon grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

37

> le plus simple etant (encore) de ne sauver/restaurer que les registres modifié mais bon grin
Ce que __attribute__((__interrupt_handler__)) serait censée faire...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

38

Mail de Kevin reçu ce matin:

Je te signale que oui, DEFINE_INT_HANDLER utilise
__attribute__((interrupt_handler)), et qu'il est fortement déconseillé
d'utiliser l'attribut directement, parce que 1. ça ne marche qu'avec
GCC 4
ou plus (3.4 ou plus, mais il n'y a pas eu de GCC 3.4 pour TIGCC) et 2.
ce
n'est pas type-safe (ça donne un void (*)(void) quand ce qu'on veut est
un
INT_HANDLER).

Voilà les définitions:
typedef struct __attribute__((__may_alias__)){short
foo;}_DEREF_INT_HANDLER,*INT_HANDLER;
#define DEFINE_INT_HANDLER(name) extern _DEREF_INT_HANDLER name[];
asm(".xdef __ref_all___custom_int_handlers;.text;.even;"#name":move.w
#0x2700,%sr;movem.l %d0-%d7/%a0-%a6,-(%sp);move.l 0xC8,%a5;jbsr
__"#name"_body__;movem.l (%sp)+,%d0-%d7/%a0-%a6;rte"); void
__##name##_body__(void)
#if __GNUC__>=4
#undef DEFINE_INT_HANDLER
#define DEFINE_INT_HANDLER(name) extern _DEREF_INT_HANDLER name[];
asm(".xdef __ref_all___custom_int_handlers;"); void __##name##_body__
(void)
asm( #name ); __attribute__((__interrupt_handler__)) void
__##name##_body__
(void)
#endif

(D'ailleurs, je vais complètement virer la définition GCC 3 bientôt,
utiliser GCC 3 avec un TIGCC livré avec GCC 4 n'est pas supporté.)
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

39

C'est beau love
roll
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

40

Mais qu'est-ce que GCC est user friendly, ya vraiment pas d'autre chose a dire...
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

41

42

Si ils voulaient se mettre enfin au #pragma .....
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

43

Même si ça s'est arrangé par rapport à une époque, les #pragmas sont mal faits en C. Ils ne veulent pas utiliser le #pragma GCC qui leur est pourtant réservé, et préfèrent ce système d'attributes...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.