change log for rtems (2010-05-21)

rtems-vc at rtems.org rtems-vc at rtems.org
Fri May 21 19:10:55 UTC 2010


 *joel*:
2010-05-21	Vinu Rajashekhar <vinutheraj at gmail.com>

	* rtems/score/registers.h: Remove structs with bit-fields. Add a mask
	for cr3 page directory.

M   1.99  cpukit/score/cpu/i386/ChangeLog
M    1.7  cpukit/score/cpu/i386/rtems/score/registers.h

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
@@ -1,3 +1,8 @@
+2010-05-21	Vinu Rajashekhar <vinutheraj at gmail.com>
+
+	* rtems/score/registers.h: Remove structs with bit-fields. Add a mask
+	for cr3 page directory.
+
 2010-03-27	Joel Sherrill <joel.sherrill at oarcorp.com>
 
 	* cpu.c, cpu_asm.S, sse_test.c: Add include of config.h

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
@@ -67,120 +67,6 @@
 
 #define CR3_PAGE_CACHE_DISABLE		0x10
 #define CR3_PAGE_WRITE_THROUGH		0x8
-
-
-#ifndef ASM
-
-/*
- * definition of eflags registers has a bit field structure
- */
-typedef struct {
-  /*
-   * fist byte : bits 0->7
-   */
-  unsigned int carry			: 1;
-  unsigned int 				: 1;
-  unsigned int parity			: 1;
-  unsigned int 				: 1;
-
-  unsigned int auxiliary_carry		: 1;
-  unsigned int 				: 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 				: 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 			: 1;
-  unsigned int				: 2;
-
-  /*
-   * fourth byte : bits 24->31 : UNUSED
-   */
-  unsigned int 				: 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 				: 2;
-  /*
-   * second byte 8->15 : UNUSED
-   */
-  unsigned int 				: 8;
-  /*
-   * third byte 16->23
-   */
-  unsigned int write_protect		: 1;
-  unsigned int 				: 1;
-  unsigned int aligment_mask		: 1;
-  unsigned int 				: 1;
-
-  unsigned int 				: 4;
-  /*
-   * fourth byte 24->31
-   */
-  unsigned int 				: 4;
-
-  unsigned int 				: 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 		        	: 3;
-  unsigned int page_write_transparent	: 1;
-  unsigned int page_cache_disable	: 1;
-  unsigned int 				: 7;
-  unsigned int page_directory_base	:20;
-}cr3_bits;
-
-typedef union {
-  cr3_bits	cr3;
-  unsigned int	i;
-}cr3;
-
-#endif
+#define CR3_PAGE_DIRECTORY_MASK		0xFFFFF000
 
 #endif


 *joel*:
2010-05-21	Vinu Rajashekhar <vinutheraj at gmail.com>

	* cache.c, page.c: Use masks and shift operations instead of
	bit-fields.

M   1.64  c/src/lib/libcpu/i386/ChangeLog
M    1.7  c/src/lib/libcpu/i386/cache.c
M   1.17  c/src/lib/libcpu/i386/page.c

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
@@ -1,3 +1,8 @@
+2010-05-21	Vinu Rajashekhar <vinutheraj at gmail.com>
+
+	* cache.c, page.c: Use masks and shift operations instead of
+	bit-fields.
+
 2010-04-15	Joel Sherrill <joel.sherrill at oarcorp.com>
 
 	* cpuModel.S, cpuModel.h, displayCpu.c: Update to include more reserved

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
@@ -9,12 +9,12 @@
 #include "cache_.h"
 
 void _CPU_disable_cache(void) {
-  cr0 regCr0;
+  unsigned int regCr0;
 
-  regCr0.i = i386_get_cr0();
-  regCr0.cr0.page_level_cache_disable = 1;
-  regCr0.cr0.no_write_through = 1;
-  i386_set_cr0( regCr0.i );
+  regCr0 = i386_get_cr0();
+  regCr0 |= CR0_PAGE_LEVEL_CACHE_DISABLE;
+  regCr0 |= CR0_NO_WRITE_THROUGH;
+  i386_set_cr0( regCr0 );
   rtems_cache_flush_entire_data();
 }
 
@@ -23,12 +23,12 @@
  */
 
 void _CPU_enable_cache(void) {
-  cr0 regCr0;
+  unsigned int regCr0;
 
-  regCr0.i = i386_get_cr0();
-  regCr0.cr0.page_level_cache_disable = 0;
-  regCr0.cr0.no_write_through = 0;
-  i386_set_cr0( regCr0.i );
+  regCr0 = i386_get_cr0();
+  regCr0 &= ~(CR0_PAGE_LEVEL_CACHE_DISABLE);
+  regCr0 &= ~(CR0_NO_WRITE_THROUGH);
+  i386_set_cr0( regCr0 );
   /*rtems_cache_flush_entire_data();*/
 }
 

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
@@ -43,12 +43,12 @@
  */
 void _CPU_disable_paging(void)
 {
-  cr0 regCr0;
+  unsigned int regCr0;
 
   rtems_cache_flush_entire_data();
-  regCr0.i = i386_get_cr0();
-  regCr0.cr0.paging = 0;
-  i386_set_cr0( regCr0.i );
+  regCr0 = i386_get_cr0();
+  regCr0 &= ~(CR0_PAGING);
+  i386_set_cr0( regCr0 );
 }
 
 /*
@@ -56,11 +56,11 @@
  */
 void _CPU_enable_paging(void)
 {
-  cr0 regCr0;
+  unsigned int regCr0;
 
-  regCr0.i = i386_get_cr0();
-  regCr0.cr0.paging = 1;
-  i386_set_cr0( regCr0.i );
+  regCr0 = i386_get_cr0();
+  regCr0 |= CR0_PAGING;
+  i386_set_cr0( regCr0 );
   rtems_cache_flush_entire_data();
 }
 
@@ -74,7 +74,7 @@
   int nbPages;
   int nbInitPages;
   char *Tables;
-  cr3 regCr3;
+  unsigned int regCr3;
   page_table *pageTable;
   unsigned int physPage;
   int nbTables=0;
@@ -135,11 +135,12 @@
     nbInitPages++;
   }
 
-  regCr3.cr3.page_write_transparent = 0;
-  regCr3.cr3.page_cache_disable     = 0;
-  regCr3.cr3.page_directory_base    = (unsigned int)pageDirectory >> 12;
+  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;
 
-  i386_set_cr3( regCr3.i );
+  i386_set_cr3( regCr3 );
 
   _CPU_enable_cache();
   _CPU_enable_paging();
@@ -152,10 +153,10 @@
  */
 int  _CPU_is_cache_enabled(void)
 {
-  cr0 regCr0;
+  unsigned int regCr0;
 
-  regCr0.i = i386_get_cr0();
-  return( ~(regCr0.cr0.page_level_cache_disable) );
+  regCr0 = i386_get_cr0();
+  return( ~(regCr0 & CR0_PAGE_LEVEL_CACHE_DISABLE) );
 }
 
 /*
@@ -163,10 +164,10 @@
  */
 int  _CPU_is_paging_enabled(void)
 {
-  cr0 regCr0;
+  unsigned int regCr0;
 
-  regCr0.i = i386_get_cr0();
-  return(regCr0.cr0.paging);
+  regCr0 = i386_get_cr0();
+  return(regCr0 & CR0_PAGING);
 }
 
 
@@ -454,21 +455,21 @@
 int  _CPU_display_memory_attribute(void)
 {
   unsigned int dirCount, pageCount;
-  cr0 regCr0;
+  unsigned int regCr0;
   page_table *localPageTable;
   unsigned int prevCache;
   unsigned int prevPresent;
   unsigned int maxPage;
   unsigned char pagingWasEnabled;
 
-  regCr0.i = i386_get_cr0();
+  regCr0 = i386_get_cr0();
 
   printk("\n\n********* MEMORY CACHE CONFIGURATION *****\n");
 
-  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"));
+  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"));
 
-  if (regCr0.cr0.paging == 0)
+  if ((regCr0 & CR0_PAGING) == 0)
     return 0;
 
   prevPresent = 0;



--

Generated by Deluxe Loginfo [http://www.codewiz.org/projects/index.html#loginfo] 2.122 by Bernardo Innocenti <bernie at develer.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/vc/attachments/20100521/ce8e5448/attachment-0001.html>


More information about the vc mailing list