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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
3
9
0451ffa1c3a0 Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
4 u32 find_dev(int devnum)
0
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
5 {
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
6 struct schib schib;
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
7 u32 sch;
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
8
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
9 for(sch=0x10000; sch<=0x1ffff; sch++) {
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
10 if (store_sch(sch, &schib))
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
11 continue;
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
12
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
13 if (!schib.pmcw.v)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
14 continue;
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
15
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
16 if (schib.pmcw.dev_num != devnum)
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
17 continue;
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
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
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
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
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
25
9
0451ffa1c3a0 Added FBA helper functions
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents: 4
diff changeset
26 return sch;
0
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
27 }
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
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
5d9f272f4db6 import template
Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
parents:
diff changeset
44 }