Annotation of frontvm/as68k/m68000.h, revision 1.1

1.1     ! root        1: #ifndef _M68K_H
        !             2: #define _M68K_H
        !             3: 
        !             4: typedef unsigned int u32;
        !             5: typedef unsigned short u16;
        !             6: typedef unsigned char u8;
        !             7: typedef signed int s32;
        !             8: typedef signed short s16;
        !             9: typedef signed char s8;
        !            10: 
        !            11: typedef void (*HOSTCALL) ();
        !            12: 
        !            13: extern char *STRam;
        !            14: 
        !            15: extern int Init680x0 ();
        !            16: extern void Start680x0 ();
        !            17: extern void FlagException (int num);
        !            18: extern int GetReg (int reg);
        !            19: extern void SetReg (int reg, int val);
        !            20: extern void DumpRegs ();
        !            21: extern unsigned int exception_handlers[32];
        !            22: 
        !            23: #define STMemory_ReadByte      MemReadByte
        !            24: #define STMemory_ReadWord      MemReadWord
        !            25: #define STMemory_ReadLong      MemReadLong
        !            26: #define STMemory_WriteByte     MemWriteByte
        !            27: #define STMemory_WriteWord     MemWriteWord
        !            28: #define STMemory_WriteLong     MemWriteLong
        !            29: 
        !            30: #define STRAM_ADDR(Var)  ((u32)STRam+((u32)Var&0x00ffffff))
        !            31: 
        !            32: extern char MemReadByte (unsigned int pos);
        !            33: extern short MemReadWord (unsigned int pos);
        !            34: extern int MemReadLong (unsigned int pos);
        !            35: extern void MemWriteByte (unsigned int pos, int val);
        !            36: extern void MemWriteWord (unsigned int pos, int val);
        !            37: extern void MemWriteLong (unsigned int pos, int val);
        !            38: 
        !            39: static inline u32 do_get_mem_long(u32 *a)
        !            40: {
        !            41: #ifdef __i386__
        !            42:        u32 val = *a;
        !            43:        __asm__ ("bswap %0\n":"=r"(val):"0"(val));
        !            44:        return val;
        !            45: #elif LITTLE_ENDIAN
        !            46:     u8 *b = (u8 *)a;
        !            47:     return (*b << 24) | (*(b+1) << 16) | (*(b+2) << 8) | (*(b+3));
        !            48: #else
        !            49:     return *a;
        !            50: #endif
        !            51: }
        !            52: 
        !            53: static inline u16 do_get_mem_word(u16 *a)
        !            54: {
        !            55: #ifdef __i386__
        !            56:        u16 val = *a;
        !            57:        __asm__ ("xchgb %b0,%h0" : "=q" (val) :  "0" (val));
        !            58:        return val;
        !            59: #elif LITTLE_ENDIAN
        !            60:     u8 *b = (u8 *)a;
        !            61:     return (*b << 8) | (*(b+1));
        !            62: #else
        !            63:     return *a;
        !            64: #endif
        !            65: }
        !            66: 
        !            67: static inline u8 do_get_mem_byte(u8 *a)
        !            68: {
        !            69:     return *a;
        !            70: }
        !            71: 
        !            72: static inline void do_put_mem_long(u32 *a, u32 v)
        !            73: {
        !            74: #ifdef __i386__
        !            75:        __asm__ ("bswap %0\n":"=r"(v):"0"(v));
        !            76:        *a = v;
        !            77: #elif LITTLE_ENDIAN
        !            78:     u8 *b = (u8 *)a;
        !            79:     
        !            80:     *b = v >> 24;
        !            81:     *(b+1) = v >> 16;    
        !            82:     *(b+2) = v >> 8;
        !            83:     *(b+3) = v;
        !            84: #else
        !            85:     *a = v;
        !            86: #endif
        !            87: }
        !            88: 
        !            89: static inline void do_put_mem_word(u16 *a, u16 v)
        !            90: {
        !            91: #ifdef __i386__
        !            92:        __asm__ ("xchgb %b0,%h0" : "=q" (v) :  "0" (v));
        !            93:        *a = v;
        !            94: #elif LITTLE_ENDIAN
        !            95:     u8 *b = (u8 *)a;
        !            96:     
        !            97:     *b = v >> 8;
        !            98:     *(b+1) = v;
        !            99: #else
        !           100:     *a = v;
        !           101: #endif
        !           102: }
        !           103: 
        !           104: static inline void do_put_mem_byte(u8 *a, u8 v)
        !           105: {
        !           106:     *a = v;
        !           107: }
        !           108: 
        !           109: #endif /* _M68K_H */

unix.superglobalmegacorp.com

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