ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/BasiliskII/src/uae_cpu/memory.h
(Generate patch)

Comparing BasiliskII/src/uae_cpu/memory.h (file contents):
Revision 1.3 by gbeauche, 2001-06-26T22:35:42Z vs.
Revision 1.8 by asvitkine, 2009-03-03T08:01:48Z

# Line 23 | Line 23
23   typedef uae_u32 (REGPARAM2 *mem_get_func)(uaecptr) REGPARAM;
24   typedef void (REGPARAM2 *mem_put_func)(uaecptr, uae_u32) REGPARAM;
25   typedef uae_u8 *(REGPARAM2 *xlate_func)(uaecptr) REGPARAM;
26 typedef int (REGPARAM2 *check_func)(uaecptr, uae_u32) REGPARAM;
26  
27   #undef DIRECT_MEMFUNCS_SUCCESSFUL
28  
# Line 44 | Line 43 | typedef struct {
43       * This doesn't work for all memory banks, so this function may call
44       * abort(). */
45      xlate_func xlateaddr;
47    /* To prevent calls to abort(), use check before calling xlateaddr.
48     * It checks not only that the memory bank can do xlateaddr, but also
49     * that the pointer points to an area of at least the specified size.
50     * This is used for example to translate bitplane pointers in custom.c */
51    check_func check;
46   } addrbank;
47  
48   extern uae_u8 filesysory[65536];
# Line 59 | Line 53 | extern addrbank frame_bank;    // Frame buf
53  
54   /* Default memory access functions */
55  
62 extern int REGPARAM2 default_check(uaecptr addr, uae_u32 size) REGPARAM;
56   extern uae_u8 *REGPARAM2 default_xlate(uaecptr addr) REGPARAM;
57  
58   #define bankindex(addr) (((uaecptr)(addr)) >> 16)
# Line 88 | Line 81 | extern void map_banks(addrbank *bank, in
81  
82   #else
83  
91 extern uae_u32 alongget(uaecptr addr);
92 extern uae_u32 awordget(uaecptr addr);
84   extern uae_u32 longget(uaecptr addr);
85   extern uae_u32 wordget(uaecptr addr);
86   extern uae_u32 byteget(uaecptr addr);
# Line 114 | Line 105 | extern void byteput(uaecptr addr, uae_u3
105  
106   #if REAL_ADDRESSING
107   const uintptr MEMBaseDiff = 0;
108 < #define do_get_real_address(a)          ((uae_u8 *)(a))
118 < #define do_get_virtual_address(a)       ((uae_u32)(a))
119 < #endif /* REAL_ADDRESSING */
120 <
121 < #if DIRECT_ADDRESSING
108 > #elif DIRECT_ADDRESSING
109   extern uintptr MEMBaseDiff;
110 < #define do_get_real_address(a)          ((uae_u8 *)(a) + MEMBaseDiff)
124 < #define do_get_virtual_address(a)       ((uae_u32)(a) - MEMBaseDiff)
125 < #endif /* DIRECT_ADDRESSING */
110 > #endif
111  
112   #if REAL_ADDRESSING || DIRECT_ADDRESSING
113 + static __inline__ uae_u8 *do_get_real_address(uaecptr addr)
114 + {
115 +        return (uae_u8 *)MEMBaseDiff + addr;
116 + }
117 + static __inline__ uae_u32 do_get_virtual_address(uae_u8 *addr)
118 + {
119 +        return (uintptr)addr - MEMBaseDiff;
120 + }
121   static __inline__ uae_u32 get_long(uaecptr addr)
122   {
123      uae_u32 * const m = (uae_u32 *)do_get_real_address(addr);
# Line 163 | Line 156 | static __inline__ uae_u32 get_virtual_ad
156   {
157          return do_get_virtual_address(addr);
158   }
166 static __inline__ int valid_address(uaecptr addr, uae_u32 size)
167 {
168    return 1;
169 }
159   #else
160   static __inline__ uae_u32 get_long(uaecptr addr)
161   {
# Line 198 | Line 187 | static __inline__ uae_u8 *get_real_addre
187   }
188   /* gb-- deliberately not implemented since it shall not be used... */
189   extern uae_u32 get_virtual_address(uae_u8 *addr);
201 static __inline__ int valid_address(uaecptr addr, uae_u32 size)
202 {
203    return get_mem_bank(addr).check(addr, size);
204 }
190   #endif /* DIRECT_ADDRESSING || REAL_ADDRESSING */
191  
192   #endif /* MEMORY_H */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines