|
|
1.1 root 1: |
2: | @(#)getidprom.s 1.1 86/02/03 Copyright (c) 1985 by Sun Microsystems, Inc.
3: |
4: #ifdef SUN2
5: #define FC_MAP 3
6: #define BYTESPERPG 0x800
7: #define IDPROMOFF 8
8: #endif
9: #ifdef SUN3
10: #define FC_MAP 3
11: #define BYTESPERPG 0x2000
12: #define IDPROMOFF 0
13: #endif
14:
15:
16: |
17: | getidprom(addr, size)
18: |
19: | Read back <size> bytes of the ID prom and store them at <addr>.
20: | Typical use: getidprom(&idprom_struct, sizeof(idprom_struct));
21: |
22: .globl _getidprom
23: _getidprom:
24: movl sp@(4),a0 | address to move ID prom bytes to
25: movl sp@(8),d1 | How many bytes to move
26: movl d2,sp@- | save a reg
27: movc sfc,d0 | save source func code
28: movl #FC_MAP,d2
29: movc d2,sfc | set space 3
30: lea IDPROMOFF,a1 | select id prom
31: jra 2$ | Enter loop at bottom as usual for dbra
32: 1$: movsb a1@+,d2 | get a byte
33: movb d2,a0@+ | save it
34: #ifdef SUN2
35: addw #BYTESPERPG-1,a1 | address next byte (in next page)
36: #endif SUN2
37: 2$: dbra d1,1$ | and loop
38: movc d0,sfc | restore sfc
39: movl sp@+,d2 | restore d2
40: rts
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.