Annotation of qemu/roms/openbios/arch/sparc32/call-romvec.S, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.