8 #define STACKFRAME_SZ 0x60
10 /* These are just handy. */
11 #define _SV save %sp, -STACKFRAME_SZ, %sp
14 #define FLUSH_ALL_KERNEL_WINDOWS \
15 _SV; _SV; _SV; _SV; _SV; _SV; _SV; \
16 _RS; _RS; _RS; _RS; _RS; _RS; _RS;
18 /* Macro for romvec handlers */
19 #define ROMVEC_HANDLER(type) \
21 .globl type##_handler; \
25 FLUSH_ALL_KERNEL_WINDOWS; \
27 save %sp, -STACKFRAME_SZ - 0x20, %sp; \
29 st %g1, [ %sp + STACKFRAME_SZ + 0x0]; \
30 st %g2, [ %sp + STACKFRAME_SZ + 0x4]; \
31 st %g3, [ %sp + STACKFRAME_SZ + 0x8]; \
32 st %g4, [ %sp + STACKFRAME_SZ + 0xc]; \
33 st %g5, [ %sp + STACKFRAME_SZ + 0x10]; \
34 st %g6, [ %sp + STACKFRAME_SZ + 0x14]; \
35 st %g7, [ %sp + STACKFRAME_SZ + 0x18]; \
49 ld [ %sp + STACKFRAME_SZ + 0x0], %g1; \
50 ld [ %sp + STACKFRAME_SZ + 0x4], %g2; \
51 ld [ %sp + STACKFRAME_SZ + 0x8], %g3; \
52 ld [ %sp + STACKFRAME_SZ + 0xc], %g4; \
53 ld [ %sp + STACKFRAME_SZ + 0x10], %g5; \
54 ld [ %sp + STACKFRAME_SZ + 0x14], %g6; \
55 ld [ %sp + STACKFRAME_SZ + 0x18], %g7; \
61 /* Generate handlers which are proxy functions to the
62 real C functions that correctly save the globals
64 ROMVEC_HANDLER(obp_devopen)
65 ROMVEC_HANDLER(obp_devclose)
66 ROMVEC_HANDLER(obp_rdblkdev)
67 ROMVEC_HANDLER(obp_nbgetchar)
68 ROMVEC_HANDLER(obp_nbputchar)
69 ROMVEC_HANDLER(obp_putstr)
70 ROMVEC_HANDLER(obp_printf)
71 ROMVEC_HANDLER(obp_reboot)
72 ROMVEC_HANDLER(obp_abort)
73 ROMVEC_HANDLER(obp_halt)
74 ROMVEC_HANDLER(obp_fortheval_v2)
75 ROMVEC_HANDLER(obp_inst2pkg)
76 ROMVEC_HANDLER(obp_dumb_memalloc)
77 ROMVEC_HANDLER(obp_dumb_memfree)
78 ROMVEC_HANDLER(obp_dumb_mmap)
79 ROMVEC_HANDLER(obp_dumb_munmap)
80 ROMVEC_HANDLER(obp_devread)
81 ROMVEC_HANDLER(obp_devwrite)
82 ROMVEC_HANDLER(obp_devseek)
83 ROMVEC_HANDLER(obp_cpustart)
84 ROMVEC_HANDLER(obp_cpustop)
85 ROMVEC_HANDLER(obp_cpuidle)
86 ROMVEC_HANDLER(obp_cpuresume)
87 ROMVEC_HANDLER(obp_nextnode)
88 ROMVEC_HANDLER(obp_child)
89 ROMVEC_HANDLER(obp_proplen)
90 ROMVEC_HANDLER(obp_getprop)
91 ROMVEC_HANDLER(obp_setprop)
92 ROMVEC_HANDLER(obp_nextprop)
93 ROMVEC_HANDLER(obp_memalloc)