|
|
1.1 ! root 1: #include "psr.h" ! 2: #include "asm/asi.h" ! 3: ! 4: .text ! 5: .align 4 ! 6: ! 7: #define STACKFRAME_SZ 0x60 ! 8: ! 9: /* These are just handy. */ ! 10: #define _SV save %sp, -STACKFRAME_SZ, %sp ! 11: #define _RS restore ! 12: ! 13: #define FLUSH_ALL_KERNEL_WINDOWS \ ! 14: _SV; _SV; _SV; _SV; _SV; _SV; _SV; \ ! 15: _RS; _RS; _RS; _RS; _RS; _RS; _RS; ! 16: ! 17: /* Macro for romvec handlers */ ! 18: #define ROMVEC_HANDLER(type) \ ! 19: \ ! 20: .globl type##_handler; \ ! 21: \ ! 22: type##_handler: \ ! 23: \ ! 24: FLUSH_ALL_KERNEL_WINDOWS; \ ! 25: \ ! 26: save %sp, -STACKFRAME_SZ - 0x20, %sp; \ ! 27: \ ! 28: st %g1, [ %sp + STACKFRAME_SZ + 0x0]; \ ! 29: st %g2, [ %sp + STACKFRAME_SZ + 0x4]; \ ! 30: st %g3, [ %sp + STACKFRAME_SZ + 0x8]; \ ! 31: st %g4, [ %sp + STACKFRAME_SZ + 0xc]; \ ! 32: st %g5, [ %sp + STACKFRAME_SZ + 0x10]; \ ! 33: st %g6, [ %sp + STACKFRAME_SZ + 0x14]; \ ! 34: st %g7, [ %sp + STACKFRAME_SZ + 0x18]; \ ! 35: \ ! 36: mov %i0, %o0; \ ! 37: mov %i1, %o1; \ ! 38: mov %i2, %o2; \ ! 39: mov %i3, %o3; \ ! 40: mov %i4, %o4; \ ! 41: mov %i5, %o5; \ ! 42: \ ! 43: call type; \ ! 44: nop; \ ! 45: \ ! 46: mov %o0, %i0; \ ! 47: \ ! 48: ld [ %sp + STACKFRAME_SZ + 0x0], %g1; \ ! 49: ld [ %sp + STACKFRAME_SZ + 0x4], %g2; \ ! 50: ld [ %sp + STACKFRAME_SZ + 0x8], %g3; \ ! 51: ld [ %sp + STACKFRAME_SZ + 0xc], %g4; \ ! 52: ld [ %sp + STACKFRAME_SZ + 0x10], %g5; \ ! 53: ld [ %sp + STACKFRAME_SZ + 0x14], %g6; \ ! 54: ld [ %sp + STACKFRAME_SZ + 0x18], %g7; \ ! 55: \ ! 56: ret; \ ! 57: restore; \ ! 58: ! 59: ! 60: /* Generate handlers which are proxy functions to the ! 61: real C functions that correctly save the globals ! 62: and stack */ ! 63: ROMVEC_HANDLER(obp_devopen) ! 64: ROMVEC_HANDLER(obp_devclose) ! 65: ROMVEC_HANDLER(obp_rdblkdev) ! 66: ROMVEC_HANDLER(obp_nbgetchar) ! 67: ROMVEC_HANDLER(obp_nbputchar) ! 68: ROMVEC_HANDLER(obp_putstr) ! 69: ROMVEC_HANDLER(obp_printf) ! 70: ROMVEC_HANDLER(obp_reboot) ! 71: ROMVEC_HANDLER(obp_abort) ! 72: ROMVEC_HANDLER(obp_halt) ! 73: ROMVEC_HANDLER(obp_fortheval_v2) ! 74: ROMVEC_HANDLER(obp_inst2pkg) ! 75: ROMVEC_HANDLER(obp_dumb_memalloc) ! 76: ROMVEC_HANDLER(obp_dumb_memfree) ! 77: ROMVEC_HANDLER(obp_dumb_mmap) ! 78: ROMVEC_HANDLER(obp_dumb_munmap) ! 79: ROMVEC_HANDLER(obp_devread) ! 80: ROMVEC_HANDLER(obp_devwrite) ! 81: ROMVEC_HANDLER(obp_devseek) ! 82: ROMVEC_HANDLER(obp_cpustart) ! 83: ROMVEC_HANDLER(obp_cpustop) ! 84: ROMVEC_HANDLER(obp_cpuidle) ! 85: ROMVEC_HANDLER(obp_cpuresume) ! 86: ROMVEC_HANDLER(obp_nextnode) ! 87: ROMVEC_HANDLER(obp_child) ! 88: ROMVEC_HANDLER(obp_proplen) ! 89: ROMVEC_HANDLER(obp_getprop) ! 90: ROMVEC_HANDLER(obp_setprop) ! 91: ROMVEC_HANDLER(obp_nextprop) ! 92: ROMVEC_HANDLER(obp_memalloc) ! 93:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.