<!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>