[Top][All Lists]
[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!
task_and_signalx.patch
Description: Text Data
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [avr-gcc-list] First version of signalx patch,
Tvrtko A. Ursulin <=