<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2010-05-21)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-21 Vinu Rajashekhar <vinutheraj@gmail.com>
* rtems/score/registers.h: Remove structs with bit-fields. Add a mask
for cr3 page directory.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/cpu/i386/ChangeLog.diff?r1=text&tr1=1.98&r2=text&tr2=1.99&diff_format=h">M</a></td><td width='1%'>1.99</td><td width='100%'>cpukit/score/cpu/i386/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/cpukit/score/cpu/i386/rtems/score/registers.h.diff?r1=text&tr1=1.6&r2=text&tr2=1.7&diff_format=h">M</a></td><td width='1%'>1.7</td><td width='100%'>cpukit/score/cpu/i386/rtems/score/registers.h</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/cpukit/score/cpu/i386/ChangeLog:1.98 rtems/cpukit/score/cpu/i386/ChangeLog:1.99
--- rtems/cpukit/score/cpu/i386/ChangeLog:1.98 Sat Mar 27 10:01:47 2010
+++ rtems/cpukit/score/cpu/i386/ChangeLog Fri May 21 14:02:05 2010
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2010-05-21 Vinu Rajashekhar <vinutheraj@gmail.com>
+
+ * rtems/score/registers.h: Remove structs with bit-fields. Add a mask
+ for cr3 page directory.
+
</font> 2010-03-27 Joel Sherrill <joel.sherrill@oarcorp.com>
* cpu.c, cpu_asm.S, sse_test.c: Add include of config.h
<font color='#006600'>diff -u rtems/cpukit/score/cpu/i386/rtems/score/registers.h:1.6 rtems/cpukit/score/cpu/i386/rtems/score/registers.h:1.7
--- rtems/cpukit/score/cpu/i386/rtems/score/registers.h:1.6 Fri Jan 28 09:56:09 2005
+++ rtems/cpukit/score/cpu/i386/rtems/score/registers.h Fri May 21 14:02:05 2010
</font><font color='#997700'>@@ -67,120 +67,6 @@
</font>
#define CR3_PAGE_CACHE_DISABLE 0x10
#define CR3_PAGE_WRITE_THROUGH 0x8
<font color='#880000'>-
-
-#ifndef ASM
-
-/*
- * definition of eflags registers has a bit field structure
- */
-typedef struct {
- /*
- * fist byte : bits 0->7
- */
- unsigned int carry : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
- unsigned int parity : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
-
- unsigned int auxiliary_carry : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
- unsigned int zero : 1; /* result is zero */
- unsigned int sign : 1; /* result is less than zero */
- /*
- * Second byte : bits 7->15
- */
- unsigned int trap : 1;
- unsigned int intr_enable : 1; /* set => intr on */
- unsigned int direction : 1; /* set => autodecrement */
- unsigned int overflow : 1;
-
- unsigned int IO_privilege : 2;
- unsigned int nested_task : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
- /*
- * Third byte : bits 15->23
- */
- unsigned int resume : 1;
- unsigned int virtual_mode : 1;
- unsigned int aligment_check : 1;
- unsigned int virtual_intr : 1;
-
- unsigned int virtual_intr_pending : 1;
- unsigned int id<span style="background-color: #FF0000"> </span> : 1;
- unsigned int : 2;
-
- /*
- * fourth byte : bits 24->31 : UNUSED
- */
- unsigned int<span style="background-color: #FF0000"> </span> : 8;
-}eflags_bits;
-
-typedef union {
- eflags_bits eflags;
- unsigned int i;
-}eflags;
-/*
- * definition of eflags registers has a bit field structure
- */
-typedef struct {
- /*
- * fist byte : bits 0->7
- */
- unsigned int protection_enable : 1;
- unsigned int monitor_coproc : 1;
- unsigned int coproc_soft_emul : 1;
- unsigned int floating_instr_except : 1;
-
- unsigned int extension_type : 1;
- unsigned int numeric_error : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 2;
- /*
- * second byte 8->15 : UNUSED
- */
- unsigned int<span style="background-color: #FF0000"> </span> : 8;
- /*
- * third byte 16->23
- */
- unsigned int write_protect : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
- unsigned int aligment_mask : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
-
- unsigned int<span style="background-color: #FF0000"> </span> : 4;
- /*
- * fourth byte 24->31
- */
- unsigned int<span style="background-color: #FF0000"> </span> : 4;
-
- unsigned int<span style="background-color: #FF0000"> </span> : 1;
- unsigned int no_write_through : 1;
- unsigned int page_level_cache_disable : 1;
- unsigned int paging : 1;
-}cr0_bits;
-
-typedef union {
- cr0_bits cr0;
- unsigned int i;
-}cr0;
-
-/*
- * definition of cr3 registers has a bit field structure
- */
-typedef struct {
-
- unsigned int<span style="background-color: #FF0000"> </span> : 3;
- unsigned int page_write_transparent : 1;
- unsigned int page_cache_disable : 1;
- unsigned int<span style="background-color: #FF0000"> </span> : 7;
- unsigned int page_directory_base :20;
-}cr3_bits;
-
-typedef union {
- cr3_bits cr3;
- unsigned int i;
-}cr3;
-
-#endif
</font><font color='#000088'>+#define CR3_PAGE_DIRECTORY_MASK 0xFFFFF000
</font>
#endif
</pre>
<p> </p>
<a name='cs2'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
<font color='#bb2222'><strong>joel</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2010-05-21 Vinu Rajashekhar <vinutheraj@gmail.com>
* cache.c, page.c: Use masks and shift operations instead of
bit-fields.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libcpu/i386/ChangeLog.diff?r1=text&tr1=1.63&r2=text&tr2=1.64&diff_format=h">M</a></td><td width='1%'>1.64</td><td width='100%'>c/src/lib/libcpu/i386/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libcpu/i386/cache.c.diff?r1=text&tr1=1.6&r2=text&tr2=1.7&diff_format=h">M</a></td><td width='1%'>1.7</td><td width='100%'>c/src/lib/libcpu/i386/cache.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libcpu/i386/page.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.17&diff_format=h">M</a></td><td width='1%'>1.17</td><td width='100%'>c/src/lib/libcpu/i386/page.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/c/src/lib/libcpu/i386/ChangeLog:1.63 rtems/c/src/lib/libcpu/i386/ChangeLog:1.64
--- rtems/c/src/lib/libcpu/i386/ChangeLog:1.63 Thu Apr 15 09:09:57 2010
+++ rtems/c/src/lib/libcpu/i386/ChangeLog Fri May 21 14:03:21 2010
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2010-05-21 Vinu Rajashekhar <vinutheraj@gmail.com>
+
+ * cache.c, page.c: Use masks and shift operations instead of
+ bit-fields.
+
</font> 2010-04-15 Joel Sherrill <joel.sherrill@oarcorp.com>
* cpuModel.S, cpuModel.h, displayCpu.c: Update to include more reserved
<font color='#006600'>diff -u rtems/c/src/lib/libcpu/i386/cache.c:1.6 rtems/c/src/lib/libcpu/i386/cache.c:1.7
--- rtems/c/src/lib/libcpu/i386/cache.c:1.6 Sat Aug 16 00:44:00 2008
+++ rtems/c/src/lib/libcpu/i386/cache.c Fri May 21 14:03:21 2010
</font><font color='#997700'>@@ -9,12 +9,12 @@
</font> #include "cache_.h"
void _CPU_disable_cache(void) {
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
<font color='#880000'>- regCr0.i = i386_get_cr0();
- regCr0.cr0.page_level_cache_disable = 1;
- regCr0.cr0.no_write_through = 1;
- i386_set_cr0( regCr0.i );
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ regCr0 |= CR0_PAGE_LEVEL_CACHE_DISABLE;
+ regCr0 |= CR0_NO_WRITE_THROUGH;
+ i386_set_cr0( regCr0 );
</font> rtems_cache_flush_entire_data();
}
<font color='#997700'>@@ -23,12 +23,12 @@
</font> */
void _CPU_enable_cache(void) {
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
<font color='#880000'>- regCr0.i = i386_get_cr0();
- regCr0.cr0.page_level_cache_disable = 0;
- regCr0.cr0.no_write_through = 0;
- i386_set_cr0( regCr0.i );
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ regCr0 &= ~(CR0_PAGE_LEVEL_CACHE_DISABLE);
+ regCr0 &= ~(CR0_NO_WRITE_THROUGH);
+ i386_set_cr0( regCr0 );
</font> /*rtems_cache_flush_entire_data();*/
}
<font color='#006600'>diff -u rtems/c/src/lib/libcpu/i386/page.c:1.16 rtems/c/src/lib/libcpu/i386/page.c:1.17
--- rtems/c/src/lib/libcpu/i386/page.c:1.16 Fri Dec 11 14:52:41 2009
+++ rtems/c/src/lib/libcpu/i386/page.c Fri May 21 14:03:21 2010
</font><font color='#997700'>@@ -43,12 +43,12 @@
</font> */
void _CPU_disable_paging(void)
{
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
rtems_cache_flush_entire_data();
<font color='#880000'>- regCr0.i = i386_get_cr0();
- regCr0.cr0.paging = 0;
- i386_set_cr0( regCr0.i );
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ regCr0 &= ~(CR0_PAGING);
+ i386_set_cr0( regCr0 );
</font> }
/*
<font color='#997700'>@@ -56,11 +56,11 @@
</font> */
void _CPU_enable_paging(void)
{
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
<font color='#880000'>- regCr0.i = i386_get_cr0();
- regCr0.cr0.paging = 1;
- i386_set_cr0( regCr0.i );
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ regCr0 |= CR0_PAGING;
+ i386_set_cr0( regCr0 );
</font> rtems_cache_flush_entire_data();
}
<font color='#997700'>@@ -74,7 +74,7 @@
</font> int nbPages;
int nbInitPages;
char *Tables;
<font color='#880000'>- cr3 regCr3;
</font><font color='#000088'>+ unsigned int regCr3;
</font> page_table *pageTable;
unsigned int physPage;
int nbTables=0;
<font color='#997700'>@@ -135,11 +135,12 @@
</font> nbInitPages++;
}
<font color='#880000'>- regCr3.cr3.page_write_transparent = 0;
- regCr3.cr3.page_cache_disable = 0;
- regCr3.cr3.page_directory_base = (unsigned int)pageDirectory >> 12;
</font><font color='#000088'>+ regCr3 &= ~(CR3_PAGE_WRITE_THROUGH);
+ regCr3 &= ~(CR3_PAGE_CACHE_DISABLE);
+ /*regCr3.cr3.page_directory_base = (unsigned int)pageDirectory >> 12;*/
+ regCr3 = (unsigned int)pageDirectory & CR3_PAGE_DIRECTORY_MASK;
</font>
<font color='#880000'>- i386_set_cr3( regCr3.i );
</font><font color='#000088'>+ i386_set_cr3( regCr3 );
</font>
_CPU_enable_cache();
_CPU_enable_paging();
<font color='#997700'>@@ -152,10 +153,10 @@
</font> */
int _CPU_is_cache_enabled(void)
{
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
<font color='#880000'>- regCr0.i = i386_get_cr0();
- return( ~(regCr0.cr0.page_level_cache_disable) );
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ return( ~(regCr0 & CR0_PAGE_LEVEL_CACHE_DISABLE) );
</font> }
/*
<font color='#997700'>@@ -163,10 +164,10 @@
</font> */
int _CPU_is_paging_enabled(void)
{
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font>
<font color='#880000'>- regCr0.i = i386_get_cr0();
- return(regCr0.cr0.paging);
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
+ return(regCr0 & CR0_PAGING);
</font> }
<font color='#997700'>@@ -454,21 +455,21 @@
</font> int _CPU_display_memory_attribute(void)
{
unsigned int dirCount, pageCount;
<font color='#880000'>- cr0 regCr0;
</font><font color='#000088'>+ unsigned int regCr0;
</font> page_table *localPageTable;
unsigned int prevCache;
unsigned int prevPresent;
unsigned int maxPage;
unsigned char pagingWasEnabled;
<font color='#880000'>- regCr0.i = i386_get_cr0();
</font><font color='#000088'>+ regCr0 = i386_get_cr0();
</font>
printk("\n\n********* MEMORY CACHE CONFIGURATION *****\n");
<font color='#880000'>- printk("CR0 -> paging : %s\n",(regCr0.cr0.paging ? "ENABLE ":"DISABLE"));
- printk(" page-level cache : %s\n\n",(regCr0.cr0.page_level_cache_disable ? "DISABLE":"ENABLE"));
</font><font color='#000088'>+ printk("CR0 -> paging : %s\n",((regCr0 & CR0_PAGING) ? "ENABLE ":"DISABLE"));
+ printk(" page-level cache : %s\n\n",((regCr0 & CR0_PAGE_LEVEL_CACHE_DISABLE) ? "DISABLE":"ENABLE"));
</font>
<font color='#880000'>- if (regCr0.cr0.paging == 0)
</font><font color='#000088'>+ if ((regCr0 & CR0_PAGING) == 0)
</font> return 0;
prevPresent = 0;
</pre>
<p> </p>
<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>