avr-gcc-list
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[avr-gcc-list] First version of signalx patch


From: Tvrtko A. Ursulin
Subject: [avr-gcc-list] First version of signalx patch
Date: Thu, 16 Jan 2003 12:56:57 +0100
User-agent: KMail/1.4.3

Hello everyone,

This is the first version of may "attribute signalx" patch for avr-gcc, 
discussion can be find in previos post.

It looks ok to me, and maybe will someone find it usefull. Especially people 
making simple RTOS?

To summarize, signalx function does the following:

(prologue)
- save r0 to current SP
- store SP to RAM, to top of __stack symbol (RAMEND)
- set SP to __stack - 3
- proceed with almost normal signal prologue

(epilogue)
- does almost normal signal epilogue
- load saved SP from top of __stack
- restore r0

In real world, on 8515, it looks like this:

SIGNALX(foo)
{
 164:   0f 92           push    r0
 166:   0d b6           in      r0, 0x3d        ; 61
 168:   00 92 5f 02     sts     0x025F, r0
 16c:   0e b6           in      r0, 0x3e        ; 62
 16e:   00 92 5e 02     sts     0x025E, r0
 172:   00 2e           mov     r0, r16
 174:   02 e0           ldi     r16, 0x02       ; 2
 176:   0e bf           out     0x3e, r16       ; 62
 178:   0c e5           ldi     r16, 0x5C       ; 92
 17a:   0d bf           out     0x3d, r16       ; 61
 17c:   00 2d           mov     r16, r0
 17e:   1f 92           push    r1
 180:   0f b6           in      r0, 0x3f        ; 63
 182:   0f 92           push    r0
 184:   11 24           eor     r1, r1


}
 186:   0f 90           pop     r0
 188:   0f be           out     0x3f, r0        ; 63
 18a:   1f 90           pop     r1
 18c:   00 90 5e 02     lds     r0, 0x025E
 190:   0e be           out     0x3e, r0        ; 62
 192:   00 90 5f 02     lds     r0, 0x025F
 196:   0d be           out     0x3d, r0        ; 61
 198:   0f 90           pop     r0
 19a:   18 95           reti

This patch also includes attribute task, which does the same as naked + proper 
stack frame setup.

Comments are appreciated!

Attachment: task_and_signalx.patch
Description: Text Data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]