Annotation of qemu/roms/openbios/arch/sparc32/call-romvec.S, revision 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.