Mercurial > sos > sos
annotate arch/svcint.S @ 83:ca308c8ca41e
beginning of svc support code
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Wed, 27 Apr 2011 12:16:35 -0400 |
parents | |
children | 5f3618fbf9ae |
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 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
16 lg %r15,%r15 |
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 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
20 lg %r14,%r14 |
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 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
23 stmg %r2,%r3,_PSA_GPRS+16 # store the return value |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
24 |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
25 lmg %r0,%r15,_PSA_GPRS |
ca308c8ca41e
beginning of svc support code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff
changeset
|
26 lpswe _PSA_OLD_SVC_PSW |