Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen die mir alle Register sichert. Es gibt dafuer das pragma saveall, aber leider wirkt das bei meinem target=M16C nicht. Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu sichern um dann selber Hand anzulegen. Leider habe ich dafuer kein Pragma gefunden. Derzeit sichert der schlaue kleine Mistkerl leider immer nur die Register die er braucht, grummel... Olaf
Olaf schrieb: > Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen > die mir alle Register sichert. Es gibt dafuer das pragma saveall, > aber leider wirkt das bei meinem target=M16C nicht. > > Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu > sichern um dann selber Hand anzulegen. Leider habe ich dafuer kein > Pragma gefunden. Derzeit sichert der schlaue kleine Mistkerl leider > immer nur die Register die er braucht, grummel... > > Olaf Dafür war AFAIK das Attribut naked vorgesehen.
Hm..klingt gut, aber leider.... ticker.h:7: Warnung: »naked« attribute directive ignored Olaf
Weiß ned ob dir das jetzt weiter hilft, aber trotzdem: Ein Beispiel ist zu finden im Source-Code von GOS Beitrag "Re: GOS: einfacher preemptive multitasking scheduler" GCC Function-Attributes http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
Olaf schrieb: > ticker.h:7: Warnung: »naked« attribute directive ignored Dann musst du wohl den/die Maintainer des GCC-Ports für deinen Prozessor mal nerven, dass sie sowas implementieren. Am besten natürlich, du produzierst den Patch dafür gleich selbst...
> Weiß ned ob dir das jetzt weiter hilft, aber trotzdem: Kucke ich mir heute Abend mal an... > Dann musst du wohl den/die Maintainer des GCC-Ports für deinen > Prozessor mal nerven, Hey, gute Idee. DJ Delorie hat bestimmt nichts zutun. :-) > Am besten natürlich, du produzierst den Patch dafür gleich selbst... Darueber hab ich auch schon nachgedacht. Ich weiss aber nicht ob ich das mal eben so schaffe. Der Source des gcc ist ja aeh..gewaltig... Da haette ich ein bisschen Angst was zu uebersehen das nur unter ganz bestimmten Umstaenden meinen Code kaputt macht wenn man sich da nicht laenger einarbeitet. Ich hatte gestern schon angefangen meine Interruptfunktion komplett in Assembler zu schreiben. Wenn es wirklich ernst wird hilft nur Maennersprache(TM). Wie kann es eigentlich sein das einige targets sowas unterstuetzen und andere nicht. Man sollte doch meinen das 'naked' mit als erstes rueberkommt wenn man einen neuen target ableitet und 'saveall' mit als erstes implementiert wird, bevor man sich ernsthaft daran macht nachzuhalten welche Register jetzt in einer Funktion benoetigt werden. Olaf
Olaf schrieb: > Wie kann es eigentlich sein das einige targets sowas unterstuetzen und > andere nicht. Weil die ganze Prolog- und Epiloggeschichte halt target-abhängig ist. Warum man natürlich dann "naked" nicht portiert, das musst du wohl wirklich DJ Delorie fragen. Der Aufwand sollte sich ja (im Vergleich zum korrekten Prolog/Epilog) in Grenzen halten.
Luk4s K. schrieb: > Dafür war AFAIK das Attribut naked vorgesehen. er will aber > Ich wuerde gerne vom gcc eine Interruptfunktion erzeugen lassen > die mir alle Register sichert. naked macht genau das gegenteil, es sichert keine Register
Peter schrieb: > naked macht genau das gegenteil, es sichert keine Register Du musst Olafs Frage aber auch bis zu Ende lesen: Olaf schrieb: > Daher wuerde ich gerne den Compiler veranlassen nichts auf dem Stack zu > sichern um dann selber Hand anzulegen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.