--- np2/i386c/memory.h 2004/03/04 16:58:57 1.9 +++ np2/i386c/memory.h 2004/03/25 15:08:32 1.12 @@ -6,6 +6,9 @@ #define MEMCALL FASTCALL #endif +#ifndef GCC_ATTR_REGPARM +#define GCC_ATTR_REGPARM +#endif // 000000-0fffff メインメモリ // 100000-10ffef HMA @@ -45,18 +48,18 @@ extern BYTE mem[0x200000]; void MEMCALL i286_memorymap(UINT type); void MEMCALL i286_vram_dispatch(UINT operate); -void MEMCALL i286_memorywrite(UINT32 address, REG8 value); -void MEMCALL i286_memorywrite_w(UINT32 address, REG16 value); -void MEMCALL i286_memorywrite_d(UINT32 address, UINT32 value); -REG8 MEMCALL i286_memoryread(UINT32 address); -REG16 MEMCALL i286_memoryread_w(UINT32 address); -UINT32 MEMCALL i286_memoryread_d(UINT32 address); +void MEMCALL i286_memorywrite(UINT32 address, REG8 value) GCC_ATTR_REGPARM; +void MEMCALL i286_memorywrite_w(UINT32 address, REG16 value) GCC_ATTR_REGPARM; +void MEMCALL i286_memorywrite_d(UINT32 address, UINT32 value) GCC_ATTR_REGPARM; +REG8 MEMCALL i286_memoryread(UINT32 address) GCC_ATTR_REGPARM; +REG16 MEMCALL i286_memoryread_w(UINT32 address) GCC_ATTR_REGPARM; +UINT32 MEMCALL i286_memoryread_d(UINT32 address) GCC_ATTR_REGPARM; #ifdef NP2_MEMORY_ASM -REG8 MEMCALL i286_membyte_read(UINT seg, UINT off); -REG16 MEMCALL i286_memword_read(UINT seg, UINT off); -void MEMCALL i286_membyte_write(UINT seg, UINT off, REG8 dat); -void MEMCALL i286_memword_write(UINT seg, UINT off, REG16 dat); +REG8 MEMCALL i286_membyte_read(UINT seg, UINT off) GCC_ATTR_REGPARM; +REG16 MEMCALL i286_memword_read(UINT seg, UINT off) GCC_ATTR_REGPARM; +void MEMCALL i286_membyte_write(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; +void MEMCALL i286_memword_write(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; #else #define i286_membyte_read(a, b) \ i286_memoryread(((UINT32)(a) << 4) + (UINT16)(b)) @@ -69,13 +72,17 @@ void MEMCALL i286_memword_write(UINT seg i286_memorywrite_w(((UINT32)(a) << 4) + (UINT16)(b), (c)) #endif -void MEMCALL memp_read(UINT32 address, void *dat, UINT leng); -void MEMCALL memp_write(UINT32 address, const void *dat, UINT leng); +void MEMCALL memp_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; +void MEMCALL memp_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; -void MEMCALL i286_memstr_read(UINT seg, UINT off, void *dat, UINT leng); -void MEMCALL i286_memstr_write(UINT seg, UINT off, const void *dat, UINT leng); -void MEMCALL meml_read(UINT32 address, void *dat, UINT leng); -void MEMCALL meml_write(UINT32 address, const void *dat, UINT leng); +REG8 MEMCALL meml_read8(UINT seg, UINT off) GCC_ATTR_REGPARM; +REG16 MEMCALL meml_read16(UINT seg, UINT off) GCC_ATTR_REGPARM; +void MEMCALL meml_write8(UINT seg, UINT off, REG8 dat) GCC_ATTR_REGPARM; +void MEMCALL meml_write16(UINT seg, UINT off, REG16 dat) GCC_ATTR_REGPARM; +void MEMCALL meml_readstr(UINT seg, UINT off, void *dat, UINT leng) GCC_ATTR_REGPARM; +void MEMCALL meml_writestr(UINT seg, UINT off, const void *dat, UINT leng) GCC_ATTR_REGPARM; +void MEMCALL meml_read(UINT32 address, void *dat, UINT leng) GCC_ATTR_REGPARM; +void MEMCALL meml_write(UINT32 address, const void *dat, UINT leng) GCC_ATTR_REGPARM; @@ -95,17 +102,17 @@ void MEMCALL meml_write(UINT32 address, // ---- Logical Space (BIOS) #define MEML_READ8(seg, off) \ - i286_memoryread(((UINT32)(seg) << 4) + LOW16(off)) + meml_read8((seg), (off)) #define MEML_READ16(seg, off) \ - i286_memoryread_w(((UINT32)(seg) << 4) + LOW16(off)) + meml_read16((seg), (off)) #define MEML_WRITE8(seg, off, dat) \ - i286_memorywrite(((UINT32)(seg) << 4) + LOW16(off), (dat)) + meml_write8((seg), (off), (dat)) #define MEML_WRITE16(seg, off, dat) \ - i286_memorywrite_w(((UINT32)(seg) << 4) + LOW16(off), (dat)) + meml_write16((seg), (off), (dat)) #define MEML_READSTR(seg, off, dat, leng) \ - i286_memstr_read((seg), (off), (dat), (leng)) + meml_readstr((seg), (off), (dat), (leng)) #define MEML_WRITESTR(seg, off, dat, leng) \ - i286_memstr_write((seg), (off), (dat), (leng)) + meml_writestr((seg), (off), (dat), (leng)) #define MEML_READ(addr, dat, leng) \ meml_read((addr), (dat), (leng)) #define MEML_WRITE(addr, dat, leng) \