Annotation of uae/src/md-i386-dos/memory.h, revision 1.1

1.1     ! root        1:  /* 
        !             2:   * UAE - The Un*x Amiga Emulator
        !             3:   * 
        !             4:   * Memory access functions
        !             5:   *
        !             6:   * Copyright 1996 Bernd Schmidt
        !             7:   */
        !             8: 
        !             9: 
        !            10: static __inline__ ULONG do_get_mem_long(ULONG *a)
        !            11: {
        !            12:     ULONG retval;
        !            13: 
        !            14:     __asm__ ("bswapl %0" : "=r" (retval) : "0" (*a) : "cc");
        !            15:     return retval;
        !            16: }
        !            17: 
        !            18: static __inline__ ULONG do_get_mem_word(UWORD *a)
        !            19: {
        !            20:     ULONG retval;
        !            21: 
        !            22:     __asm__ ("movzwl %1,%k0\n\trolw $8,%w0" : "=r" (retval) : "m" (*a) : "cc");
        !            23:     return retval;
        !            24: }
        !            25: 
        !            26: static __inline__ UBYTE do_get_mem_byte(UBYTE *a)
        !            27: {
        !            28:     return *a;
        !            29: }
        !            30: 
        !            31: static __inline__ void do_put_mem_long(ULONG *a, ULONG v)
        !            32: {
        !            33:     __asm__ ("bswapl %0" : "=r" (v) : "0" (v) : "cc");
        !            34:     *a = v;
        !            35: }
        !            36: 
        !            37: static __inline__ void do_put_mem_word(UWORD *a, UWORD v)
        !            38: {
        !            39:     __asm__ ("rolw $8,%0" : "=r" (v) : "0" (v) : "cc");
        !            40:     *a = v;
        !            41: }
        !            42: 
        !            43: static __inline__ void do_put_mem_byte(UBYTE *a, UBYTE v)
        !            44: {
        !            45:     *a = v;
        !            46: }
        !            47: 
        !            48: #if 0
        !            49: static __inline__ ULONG call_mem_get_func(mem_get_func func, CPTR addr)
        !            50: {
        !            51:     ULONG result;
        !            52:     __asm__("call *%1"
        !            53:            : "=a" (result) : "r" (func) : "cc", "edx", "ecx");
        !            54:     return result;
        !            55: }
        !            56: 
        !            57: static __inline__ void call_mem_put_func(mem_put_func func, CPTR addr, ULONG v)
        !            58: {
        !            59:     __asm__("call *%1"
        !            60:            : : "a" (addr), "d" (v), "r" (func) : "cc", "eax", "edx", "ecx", "memory");
        !            61: }
        !            62: #else
        !            63: 
        !            64: #define call_mem_get_func(func,addr) ((*func)(addr))
        !            65: #define call_mem_put_func(func,addr,v) ((*func)(addr,v))
        !            66: 
        !            67: #endif
        !            68: 
        !            69: #undef USE_MAPPED_MEMORY
        !            70: #undef CAN_MAP_MEMORY
        !            71: #undef NO_INLINE_MEMORY_ACCESS

unix.superglobalmegacorp.com

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