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.7 by gbeauche, 2007-06-13T15:57:46Z

# 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 <
108 > #endif
109   #if DIRECT_ADDRESSING
110   extern uintptr MEMBaseDiff;
111 < #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 */
111 > #endif
112  
113   #if REAL_ADDRESSING || DIRECT_ADDRESSING
114 + static __inline__ uae_u8 *do_get_real_address(uaecptr addr)
115 + {
116 +        return (uae_u8 *)MEMBaseDiff + addr;
117 + }
118 + static __inline__ uae_u32 do_get_virtual_address(uae_u8 *addr)
119 + {
120 +        return (uintptr)addr - MEMBaseDiff;
121 + }
122   static __inline__ uae_u32 get_long(uaecptr addr)
123   {
124      uae_u32 * const m = (uae_u32 *)do_get_real_address(addr);
# Line 163 | Line 157 | static __inline__ uae_u32 get_virtual_ad
157   {
158          return do_get_virtual_address(addr);
159   }
166 static __inline__ int valid_address(uaecptr addr, uae_u32 size)
167 {
168    return 1;
169 }
160   #else
161   static __inline__ uae_u32 get_long(uaecptr addr)
162   {
# Line 198 | Line 188 | static __inline__ uae_u8 *get_real_addre
188   }
189   /* gb-- deliberately not implemented since it shall not be used... */
190   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 }
191   #endif /* DIRECT_ADDRESSING || REAL_ADDRESSING */
192  
193   #endif /* MEMORY_H */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines