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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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