Mercurial > sos > sos
annotate arch/svcint.S @ 95:cabcdc3727e3
arch: implemented swapcontext & fixed few minor issues
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Thu, 12 May 2011 15:56:46 -0400 |
parents | 5f3618fbf9ae |
children |
rev | line source |
---|---|
83
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
1 #include "svcint.h" |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
2 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
3 .text |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
4 .align 4 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
5 .globl SVCINT |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
6 .type SVCINT, @function |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
7 SVCINT: |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
8 stmg %r0,%r15,_PSA_GPRS |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
9 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
10 xgr %r2,%r2 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
11 ic %r2,_PSA_SVC_ID+3 # r2 = SVC |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
12 lmg %r3,%r6,_PSA_GPRS+16 # shift all the args |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
13 xgr %r7,%r7 # just to make sure accesses to more |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
14 # than 4 args fail |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
15 larl %r15,_SVC_STACK |
84
5f3618fbf9ae
arch: fix SVC interrupt handler
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
83
diff
changeset
|
16 lg %r15,0(%r15) |
83
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
17 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
18 # call into C... f(svc, arg0, arg1, arg2, arg3) |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
19 larl %r14,_SVC_HANDLER |
84
5f3618fbf9ae
arch: fix SVC interrupt handler
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
83
diff
changeset
|
20 lg %r14,0(%r14) |
83
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
21 basr %r14,%r14 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
22 |
95
cabcdc3727e3
arch: implemented swapcontext & fixed few minor issues
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
84
diff
changeset
|
23 sr %r1,%r1 |
cabcdc3727e3
arch: implemented swapcontext & fixed few minor issues
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
84
diff
changeset
|
24 sr %r3,%r3 |
cabcdc3727e3
arch: implemented swapcontext & fixed few minor issues
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
84
diff
changeset
|
25 sigp %r1,%r3,0x05 |
83
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
26 |
95
cabcdc3727e3
arch: implemented swapcontext & fixed few minor issues
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
84
diff
changeset
|
27 .byte 0x00, 0x00, 0x00, 0x00 |