1 /*
2   Hatari - stMemory.h
3 
4   This file is distributed under the GNU General Public License, version 2
5   or at your option any later version. Read the file gpl.txt for details.
6 */
7 
8 #ifndef HATARI_STMEMORY_H
9 #define HATARI_STMEMORY_H
10 
11 #include "main.h"
12 #include "sysdeps.h"
13 #include "maccess.h"
14 #include "memory.h"
15 
16 
17 #if ENABLE_SMALL_MEM
18 extern Uint8 *STRam;
19 extern uae_u8 *ROMmemory;
20 # define RomMem (ROMmemory-0xe00000)
21 #else
22 extern Uint8 STRam[16*1024*1024];
23 #define RomMem STRam
24 #endif  /* ENABLE_SMALL_MEM */
25 
26 extern uae_u8 *TTmemory;
27 extern uae_u32 TTmem_size;
28 
29 extern Uint32 STRamEnd;
30 
31 
32 #define	MEM_BANK_SIZE_128	( 128 * 1024 )		/* 00b */
33 #define	MEM_BANK_SIZE_512	( 512 * 1024 )		/* 01b */
34 #define	MEM_BANK_SIZE_2048	( 2048 * 1024 )		/* 10b */
35 #define	MEM_BANK_SIZE_8192	( 8192 * 1024 )		/* for TT */
36 
37 extern Uint32	RAM_Bank0_Size;
38 extern Uint32	RAM_Bank1_Size;
39 
40 extern Uint32	MMU_Bank0_Size;
41 extern Uint32	MMU_Bank1_Size;
42 
43 
44 extern void STMemory_Init ( int RAM_Size_Byte );
45 extern void STMemory_Reset ( bool bCold );
46 
47 extern bool STMemory_SafeClear(Uint32 addr, unsigned int len);
48 extern bool STMemory_SafeCopy(Uint32 addr, Uint8 *src, unsigned int len, const char *name);
49 extern void STMemory_MemorySnapShot_Capture(bool bSave);
50 extern void STMemory_SetDefaultConfig(void);
51 extern bool STMemory_CheckAreaType ( Uint32 addr , int size , int mem_type );
52 extern bool STMemory_CheckRegionBusError ( Uint32 addr );
53 extern void *STMemory_STAddrToPointer ( Uint32 addr );
54 
55 extern void	STMemory_Write ( Uint32 addr , Uint32 val , int size );
56 extern void	STMemory_WriteLong ( Uint32 addr , Uint32 val );
57 extern void	STMemory_WriteWord ( Uint32 addr , Uint16 val );
58 extern void	STMemory_WriteByte ( Uint32 addr , Uint8 val );
59 extern Uint32	STMemory_Read ( Uint32 addr , int size );
60 extern Uint32	STMemory_ReadLong ( Uint32 addr );
61 extern Uint16	STMemory_ReadWord ( Uint32 addr );
62 extern Uint8	STMemory_ReadByte ( Uint32 addr );
63 
64 extern void	STMemory_MMU_Config_ReadByte ( void );
65 extern void	STMemory_MMU_Config_WriteByte ( void );
66 
67 extern int	STMemory_RAM_Validate_Size_KB ( int TotalMem );
68 extern bool	STMemory_RAM_SetBankSize ( int TotalMem , Uint32 *pBank0_Size , Uint32 *pBank1_Size , Uint8 *pMMU_Conf );
69 extern Uint32	STMemory_MMU_Translate_Addr ( Uint32 addr_logical );
70 
71 #endif
72