Hi,
void SIG_OUTPUT_COMPARE1A( void ) _attribute_ ( ( signal, naked ) );
void SIG_OUTPUT_COMPARE1A( void )
{
vPortYieldFromTick();
asm volatile ( "reti" );
}
die attributes werden vom Compiler hartnäckig ignoriert.
Woran liegt's?
wer kann helfen?
Gruß!!!
Gast
#425437
signal und naked zugleich sind IMHO widersprüchlich. Mit signal weist du den Compiler an einen Prolog/Epilog passend für eine Signalroutine zu erzeugen und mit naked weist du ihn an den Prolog/Epilog wegzustrippen... Entscheide dich ;-)
Hallo,
Er ignoriert die Attributes auch wenn sie einzeln sind.
/*
* Manual context switch. The first thing we do is save the registers
* so we can use a naked attribute.
*/
void vPortYield( void ) __attribute__((naked));
void vPortYield( void )
{
portSAVE_CONTEXT();
vTaskSwitchContext();
portRESTORE_CONTEXT();
// asm volatile ( "l.rfe" );
}
> Er ignoriert die Attributes auch wenn sie einzeln sind.
Beweise?
hallo Jorg, meintest du mit Beweise das? /var/vob/hajorp/orpsoc/vob/units/orp-gcc/bin/or32-uclinux-gcc -c -I/include -DOR1K -Wall -Wstrict-prototypes -Werror-implicit-function-declaration -fomit-frame-pointer -fno-strength-reduce -O2 -g -pipe -fno-builtin -msoft-mul -msoft-div -nostdlib ../portable/port.c ../portable/port.c:57: warning: `naked' attribute directive ignored ../portable/port.c:58: warning: `naked' attribute directive ignored . . . Gruß
Gast
#425710
Welche Compilerversion verwendest du? 'naked' kenne ich für ARM und AVR Targets. Dein Target ist OpenRISC 1000? Ist das naked attribute in diese Toolchain überhaupt eingebaut? http://www.opencores.org/projects.cgi/web/or1k/gnu_toolchain_port
Stefan wrote: > Welche Compilerversion verwendest du? 'naked' kenne ich für ARM und AVR > Targets. > > Dein Target ist OpenRISC 1000? Ist das naked attribute in diese > Toolchain überhaupt eingebaut? > > http://www.opencores.org/projects.cgi/web/or1k/gnu_toolchain_port Wenn nicht, wo kann man es sehen und wie kann man es da einbauen? Die version ist 2.95.3, das Target ist OpenRISC 1000 bzw. 1200
Das steht vermutlich im Compilermanual, also RTFCM (F = Fine!).
Gast
#426289
Wenn du es im Manual nicht findest, kann du auch das Developer-Team fragen. Per Email direkt oder über die Mailing List oder das Forum... Mit Version 2.95.3 solltest du dort aber nicht mehr antreten ;-) Unter dem aufgeführten Link sind sie beim gcc bereits bei Versionsnummer 3.4.4
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.