summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/i386/page.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libcpu/i386/page.c')
-rw-r--r--c/src/lib/libcpu/i386/page.c78
1 files changed, 39 insertions, 39 deletions
diff --git a/c/src/lib/libcpu/i386/page.c b/c/src/lib/libcpu/i386/page.c
index b27dc2b920..45d9aaadd2 100644
--- a/c/src/lib/libcpu/i386/page.c
+++ b/c/src/lib/libcpu/i386/page.c
@@ -80,22 +80,22 @@ int init_paging(void)
page_table *pageTable;
unsigned int physPage;
int nbTables=0;
-
+
/*
* rtemsFreeMemStart is the last valid 32-bits address
* so the size is rtemsFreeMemStart + 4
*/
memorySize = rtemsFreeMemStart + 4;
-
+
nbPages = ( (memorySize - 1) / PG_SIZE ) + 1;
nbTables = ( (memorySize - 1) / FOUR_MB ) + 2;
/* allocate 1 page more to page alignement */
- Tables = (char *)malloc( (nbTables + 1)*sizeof(page_table) );
+ Tables = (char *)malloc( (nbTables + 1)*sizeof(page_table) );
if ( Tables == NULL ){
return -1; /*unable to allocate memory */
}
-
+
/* 4K-page alignement */
Tables += (PG_SIZE - (int)Tables) & 0xFFF;
@@ -139,7 +139,7 @@ int init_paging(void)
directoryEntry ++;
pageTable ++;
}
-
+
nbInitPages++;
}
@@ -149,8 +149,8 @@ int init_paging(void)
i386_set_cr3( regCr3.i );
- _CPU_enable_cache();
- _CPU_enable_paging();
+ _CPU_enable_cache();
+ _CPU_enable_paging();
return 0;
}
@@ -189,13 +189,13 @@ int _CPU_map_phys_address(
int size,
int flag
)
-{
+{
page_table *localPageTable;
unsigned int lastAddress, countAddress;
char *Tables;
linear_address virtualAddress;
unsigned char pagingWasEnabled;
-
+
pagingWasEnabled = 0;
if (_CPU_is_paging_enabled()){
@@ -215,7 +215,7 @@ int _CPU_map_phys_address(
/* Need to allocate a new page table */
if (pageDirectory->pageDirEntry[directoryEntry].bits.page_frame_address == 0){
/* We allocate 2 pages to perform 4k-page alignement */
- Tables = (char *)malloc(2*sizeof(page_table));
+ Tables = (char *)malloc(2*sizeof(page_table));
if ( Tables == NULL ){
if (pagingWasEnabled)
_CPU_enable_paging();
@@ -225,7 +225,7 @@ int _CPU_map_phys_address(
Tables += (PG_SIZE - (int)Tables) & 0xFFF;
/* Reset Table */
- memset( Tables, 0, sizeof(page_table) );
+ memset( Tables, 0, sizeof(page_table) );
pageDirectory->pageDirEntry[directoryEntry].bits.page_frame_address =
(unsigned int)Tables >> 12;
pageDirectory->pageDirEntry[directoryEntry].bits.available = 0;
@@ -237,7 +237,7 @@ int _CPU_map_phys_address(
pageDirectory->pageDirEntry[directoryEntry].bits.writable = 1;
pageDirectory->pageDirEntry[directoryEntry].bits.present = 1;
}
-
+
localPageTable = (page_table *)(pageDirectory->
pageDirEntry[directoryEntry].bits.
@@ -264,7 +264,7 @@ int _CPU_map_phys_address(
countAddress += PG_SIZE;
tableEntry++;
- if (tableEntry >= MAX_ENTRY){
+ if (tableEntry >= MAX_ENTRY){
tableEntry = 0;
directoryEntry++;
}
@@ -285,7 +285,7 @@ static void Paging_Table_Compress(void)
{
unsigned int dirCount, pageCount;
page_table *localPageTable;
-
+
if (tableEntry == 0){
dirCount = directoryEntry - 1;
pageCount = MAX_ENTRY - 1;
@@ -294,7 +294,7 @@ static void Paging_Table_Compress(void)
dirCount = directoryEntry;
pageCount = tableEntry - 1;
}
-
+
while (1){
localPageTable = (page_table *)(pageDirectory->
@@ -303,7 +303,7 @@ static void Paging_Table_Compress(void)
if (localPageTable->pageTableEntry[pageCount].bits.present == 1){
pageCount++;
- if (pageCount >= MAX_ENTRY){
+ if (pageCount >= MAX_ENTRY){
pageCount = 0;
dirCount++;
}
@@ -312,13 +312,13 @@ static void Paging_Table_Compress(void)
if (pageCount == 0) {
- if (dirCount == 0){
+ if (dirCount == 0){
break;
}
else {
pageCount = MAX_ENTRY - 1;
dirCount-- ;
- }
+ }
}
else
pageCount-- ;
@@ -327,8 +327,8 @@ static void Paging_Table_Compress(void)
directoryEntry = dirCount;
tableEntry = pageCount;
}
-
-
+
+
/*
* Unmap the virtual address from the tables
* (we do not deallocate the table already allocated)
@@ -338,14 +338,14 @@ int _CPU_unmap_virt_address(
void *mappedAddress,
int size
)
-{
+{
linear_address linearAddr;
page_table *localPageTable;
unsigned int lastAddr ;
unsigned int dirCount ;
unsigned char pagingWasEnabled;
-
+
pagingWasEnabled = 0;
if (_CPU_is_paging_enabled()){
@@ -371,15 +371,15 @@ int _CPU_unmap_virt_address(
localPageTable = (page_table *)(pageDirectory->
pageDirEntry[linearAddr.bits.directory].bits.
page_frame_address << 12);
-
+
if (localPageTable->pageTableEntry[linearAddr.bits.page].bits.present == 0){
if (pagingWasEnabled)
_CPU_enable_paging();
return -1;
}
-
- localPageTable->pageTableEntry[linearAddr.bits.page].bits.present = 0;
-
+
+ localPageTable->pageTableEntry[linearAddr.bits.page].bits.present = 0;
+
linearAddr.address += PG_SIZE ;
}
Paging_Table_Compress();
@@ -390,7 +390,7 @@ int _CPU_unmap_virt_address(
}
/*
- * Modify the flags PRESENT, WRITABLE, USER, WRITE_TROUGH, CACHE_DISABLE
+ * Modify the flags PRESENT, WRITABLE, USER, WRITE_TROUGH, CACHE_DISABLE
* of the page's descriptor.
*/
@@ -400,20 +400,20 @@ int _CPU_change_memory_mapping_attribute(
unsigned int size,
unsigned int flag
)
-{
+{
linear_address linearAddr;
page_table *localPageTable;
unsigned int lastAddr ;
unsigned char pagingWasEnabled;
-
+
pagingWasEnabled = 0;
if (_CPU_is_paging_enabled()){
pagingWasEnabled = 1;
_CPU_disable_paging();
}
-
+
linearAddr.address = (unsigned int)mappedAddress;
lastAddr = (unsigned int)mappedAddress + (size - 1);
@@ -430,18 +430,18 @@ int _CPU_change_memory_mapping_attribute(
localPageTable = (page_table *)(pageDirectory->
pageDirEntry[linearAddr.bits.directory].bits.
page_frame_address << 12);
-
+
if (localPageTable->pageTableEntry[linearAddr.bits.page].bits.present == 0){
if (pagingWasEnabled)
_CPU_enable_paging();
return -1;
}
-
+
localPageTable->pageTableEntry[linearAddr.bits.page].table_entry &= ~MASK_FLAGS ;
localPageTable->pageTableEntry[linearAddr.bits.page].table_entry |= flag ;
-
+
linearAddr.address += PG_SIZE ;
- }
+ }
if (newAddress != NULL)
*newAddress = mappedAddress ;
@@ -460,7 +460,7 @@ int _CPU_change_memory_mapping_attribute(
#include <rtems/bspIo.h>
int _CPU_display_memory_attribute(void)
-{
+{
unsigned int dirCount, pageCount;
cr0 regCr0;
page_table *localPageTable;
@@ -468,9 +468,9 @@ int _CPU_display_memory_attribute(void)
unsigned int prevPresent;
unsigned int maxPage;
unsigned char pagingWasEnabled;
-
+
regCr0.i = i386_get_cr0();
-
+
printk("\n\n********* MEMORY CACHE CONFIGURATION *****\n");
printk("CR0 -> paging : %s\n",(regCr0.cr0.paging ? "ENABLE ":"DISABLE"));
@@ -478,10 +478,10 @@ int _CPU_display_memory_attribute(void)
if (regCr0.cr0.paging == 0)
return 0;
-
+
prevPresent = 0;
prevCache = 1;
-
+
pagingWasEnabled = 0;
if (_CPU_is_paging_enabled()){