⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 arm925t.h

📁 有关于USB的一些主机端驱动
💻 H
📖 第 1 页 / 共 3 页
字号:
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_CACHE (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_FLUSH_ICACHE                                             
// DESCRIPTION : Flush I_Cache                                                
// PARAMETERS  : See ARM925 CP15 Register 7 specification                     
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_ICACHE (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_FLUSH_ICACHE_ENTRY                                       
// DESCRIPTION : Flush I_Cache Entry                                          
// PARAMETERS  : See ARM925 CP15 Register 7 specification: Virtual Address    
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_ICACHE_ENTRY (int);

//-------------------------------------------------------------------------------
// NAME        : ARM_FLUSH_DCACHE                                             
// DESCRIPTION : Flush D_Cache                                                
// PARAMETERS  : See ARM925 CP15 Register 7 specification                     
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_DCACHE (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_FLUSH_DCACHE_ENTRY                                       
// DESCRIPTION : Flush D_Cache Entry                                          
// PARAMETERS  : See ARM925 CP15 Register 7 specification: Virtual Address    
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_DCACHE_ENTRY (int);

//-------------------------------------------------------------------------------
// NAME        : ARM_CLEAN_DCACHE                                             
// DESCRIPTION : Clean D_Cache                                                
// PARAMETERS  : See ARM925 CP15 Register 7 specification                     
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_CLEAN_DCACHE (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_CLEAN_DCACHE_ENTRY                                       
// DESCRIPTION : Clean D_Cache Entry                                          
// PARAMETERS  : See ARM925 CP15 Register 7 specification                     
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_CLEAN_DCACHE_ENTRY (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_CLEAN_FLUSH_DCACHE_ENTRY                                 
// DESCRIPTION : Clean and Flush D_Cache Entry                                
// PARAMETERS  : See ARM925 CP15 Register 7 specification: Virtual Address    
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_CLEAN_FLUSH_DCACHE_ENTRY (int);

//-------------------------------------------------------------------------------
// NAME        : ARM_FLUSH_TLB                                                
// DESCRIPTION : Invalidate all entries in TLB (I_TLB and D_TLB)              
// PARAMETERS  : See ARM925 CP15 Register 8 specification                     
// RETURN VALUE: None.                                                        
// LIMITATIONS : None.                                                        
//-------------------------------------------------------------------------------
extern void ARM_FLUSH_TLB (void);

//-------------------------------------------------------------------------------
// NAME        : ARM_Section                                                  
// DESCRIPTION : Build 1st level descriptor and address of this descriptor    
//               Write this descriptor into translation table                 
// PARAMETERS  : Physical Address, Virtual Address, TTB, access permission bit
//               domain used, Cacheable and Bufferable bits                 
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_Section(PA, VA, TTB, ap, domain, CB )     			     \
{                                                     			     \
 int add_D1, val_D1;                                   			     \
 add_D1 = ((TTB & 0xFFFFC000) | (((VA >> 20) << 2) & 0x00003FFF));   	     \
 val_D1 = ((PA & 0xFFF00000) | (ap << 10) | (domain << 5) |(CB << 2) | 0x2); \
 *(UWORD32*)add_D1 = val_D1;                                                 \
}

//-------------------------------------------------------------------------------
// NAME        : ARM_LargePage                                              
// DESCRIPTION : Build 1st & 2nd level descriptors and addresses            
//               Write these descriptors into translation table             
// PARAMETERS  : Physical Address, Virtual Address, TTB, page table base,   
//               access permission bits, domain used, C_mmu and B_mmu bits  
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_LargePage(PA, VA, TTB, page_base,                               \
                      ap0, ap1, ap2, ap3, domain, CB)                       \
{                                                                           \
int add_D1, val_D1;                                                         \
int add_D2, val_D2;                                                         \
 add_D1 = ((TTB & 0xFFFFC000) | (((VA >> 20) << 2) & 0x00003FFF));          \
 val_D1 = ((page_base & 0xFFFFFC00) | (domain << 5) | 0x1);                 \
 add_D2 = ((page_base & 0xFFFFFC00) | (((VA & 0x000FF000) >> 12) << 2));    \
 val_D2 =  ((PA & 0xFFFF0000) | (ap3 << 10) | (ap2 << 8) | (ap1 << 6) |     \
          (ap0 << 4) | (CB << 2) | 0x1);                                    \
 *(UWORD32*)add_D1 = val_D1;                                                \
 *(UWORD32*)add_D2 = val_D2;                                                \
}									    


//-------------------------------------------------------------------------------
// NAME        : ARM_SmallPage                                              
// DESCRIPTION : Build 1st & 2nd level descriptors and addresses            
//               Write these descriptors into translation table             
// PARAMETERS  : Physical Address, Virtual Address, TTB, page table base,   
//               access permission bits, domain used, C_mmu and B_mmu bits  
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_SmallPage(PA, VA, TTB, page_base,                               \
                      ap0, ap1, ap2, ap3, domain, CB)                       \
{                                                                           \
int add_D1, val_D1;                                                         \
int add_D2, val_D2;                                                         \
 add_D1 = ((TTB & 0xFFFFC000) | (((VA >> 20) << 2) & 0x00003FFF));          \
 val_D1 = ((page_base & 0xFFFFFC00) | (domain << 5) | 0x1);                 \
 add_D2 = ((page_base & 0xFFFFFC00) | (((VA & 0x000FF000) >> 12) << 2));    \
 val_D2 = ((PA & 0xFFFFF000) | (ap3 << 10) | (ap2 << 8) | (ap1 << 6) |      \
           (ap0 << 4) | (CB << 2) | 0x2);                                   \
 *(UWORD32*)add_D1 = val_D1;                                                \
 *(UWORD32*)add_D2 = val_D2;                                                \
}									    

//-------------------------------------------------------------------------------
// NAME        : ARM_TinyPage                                               
// DESCRIPTION : Build 1st & 2nd level descriptors and addresses            
//               Write these descriptors into translation table             
// PARAMETERS  : Physical Address, Virtual Address, TTB, page table base,   
//               access permission bits, domain used, C_mmu and B_mmu bits  
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_TinyPage(PA, VA, TTB, page_base, ap, domain, CB)                \
{                                                                           \
int add_D1, add_D2;                                                         \
int val_D1, val_D2;                                                         \
 add_D1 = ((TTB & 0xFFFFC000) | (((VA >> 20) << 2) & 0x00003FFF));          \
 val_D1 = ((page_base & 0xFFFFF000) | (domain << 5) | 0x3);                 \
 add_D2 = ((page_base & 0xFFFFF000) | (((VA & 0x000FFC00) >> 10) << 2));    \
 val_D2 = ((PA & 0xFFFFFC00) | (ap << 4) | (CB << 2) | 0x3);                \
 *(UWORD32*)add_D1 = val_D1;                                                \
 *(UWORD32*)add_D2 = val_D2;                                                \
}									    
									    
//-------------------------------------------------------------------------------
// NAME        : ARM_SET_REG15_CONFIGURATION                                
// DESCRIPTION : Write value into CP15 register15 (Configuration Register)  
// PARAMETERS  : See ARM925 CP15 Register 15 specification                  
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
extern void ARM_SET_REG15_CONFIGURATION (UWORD32);

//-------------------------------------------------------------------------------
// NAME        : ARM_SET_WINCE_MODE                                         
// DESCRIPTION : Reset OS Bit (bit 5)                                       
// PARAMETERS  : None.                                                      
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_SET_WINCE_MODE()                                                \
{                                                                           \
   UWORD32 tmp_value = ARM_READ_REG15_CONFIGURATION();                      \
   tmp_value = (tmp_value & (~O_bit));                                      \
   ARM_SET_REG15_CONFIGURATION(tmp_value);                                  \
} 									    

//-------------------------------------------------------------------------------
// NAME        : ARM_SET_ARM915T_MODE                                       
// DESCRIPTION : Set OS Bit (bit 5)                                         
// PARAMETERS  : None.                                                      
// RETURN VALUE: None.                                                      
// LIMITATIONS : None.                                                      
//-------------------------------------------------------------------------------
#define ARM_SET_ARM915T_MODE()                                              \
{                                                                           \
   UWORD32 tmp_value = ARM_READ_REG15_CONFIGURATION();                      \
   tmp_value = (tmp_value | O_bit);                                         \
   ARM_SET_REG15_CONFIGURATION(tmp_value);                                  \
} 									    


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -