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
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
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