Mercurial > sarpn
annotate arch/io.c @ 14:c75be274ce23
Now functioning arch code
author | Josef 'Jeff' Sipek <jeffpc@josefsipek.net> |
---|---|
date | Thu, 07 Apr 2011 23:29:10 -0400 |
parents | 40af39d064fa |
children | 3d69c66b2610 |
rev | line source |
---|---|
12
40af39d064fa
Refactor the arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
9
diff
changeset
|
1 #include "channel.h" |
40af39d064fa
Refactor the arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
9
diff
changeset
|
2 #include <die.h> |
0 | 3 |
9
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
4 u32 find_dev(int devnum) |
0 | 5 { |
6 struct schib schib; | |
7 u32 sch; | |
8 | |
9 for(sch=0x10000; sch<=0x1ffff; sch++) { | |
10 if (store_sch(sch, &schib)) | |
11 continue; | |
12 | |
13 if (!schib.pmcw.v) | |
14 continue; | |
15 | |
16 if (schib.pmcw.dev_num != devnum) | |
17 continue; | |
18 | |
14
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
19 if (!schib.pmcw.e) { |
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
20 schib.pmcw.e = 1; |
0 | 21 |
14
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
22 if (modify_sch(sch, &schib)) |
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
23 continue; |
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
24 } |
0 | 25 |
9
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
26 return sch; |
0 | 27 } |
28 | |
9
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
29 return 0; |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
30 } |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
31 |
14
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
32 extern void IOINT(void); |
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
33 |
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
34 void init_io_int() |
9
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
35 { |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
36 struct psw psw; |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
37 |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
38 // set up the IO interrupt handler |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
39 psw.ea = 1; |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
40 psw.ba = 1; |
14
c75be274ce23
Now functioning arch code
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
12
diff
changeset
|
41 psw.ptr = (u64) &IOINT; |
9
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
42 |
0451ffa1c3a0
Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
4
diff
changeset
|
43 __builtin_memcpy(((void*) 0x1f0), &psw, sizeof(struct psw)); |
0 | 44 } |