]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
POST: Add disable interrupts in some of the missing CPU POST tests
authorStefan Roese <sr@denx.de>
Fri, 18 Jul 2008 09:03:35 +0000 (11:03 +0200)
committerWolfgang Denk <wd@denx.de>
Sun, 20 Jul 2008 21:00:22 +0000 (23:00 +0200)
Some CPU POST tests did not disable the interrupts while running. This
seems to be necessary to protect this self modifying code.

Signed-off-by: Stefan Roese <sr@denx.de>
post/lib_ppc/b.c
post/lib_ppc/cmp.c
post/lib_ppc/cmpi.c
post/lib_ppc/complex.c
post/lib_ppc/cr.c
post/lib_ppc/load.c
post/lib_ppc/multi.c
post/lib_ppc/store.c
post/lib_ppc/string.c

index 45b9ff26e86b271e1d85a7465791a7407b8b1744..7a2583dc7472ba7a771d938585f6db7ca2cbae05 100644 (file)
@@ -95,6 +95,7 @@ int cpu_post_test_b (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     if (ret == 0)
     {
@@ -188,6 +189,9 @@ int cpu_post_test_b (void)
        }
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 8d80f86aafd7b60e869cacffdcfc64861b24d66f..13809d417bb61fa6ab89459169fd9338dd8ee3d3 100644 (file)
@@ -102,6 +102,7 @@ int cpu_post_test_cmp (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     for (i = 0; i < cpu_post_cmp_size && ret == 0; i++)
     {
@@ -124,6 +125,9 @@ int cpu_post_test_cmp (void)
        }
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 92b4d57b1fd140a5fd8ddcdc57cd508be3ecf77f..5ecfe872a4f692d79f3aa6e816dfe2b4f2833c00 100644 (file)
@@ -102,6 +102,7 @@ int cpu_post_test_cmpi (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     for (i = 0; i < cpu_post_cmpi_size && ret == 0; i++)
     {
@@ -124,6 +125,9 @@ int cpu_post_test_cmpi (void)
        }
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 271392a0e8c3314e84d5ada159251c99b7a7c921..4983c51919e825b0b06469c2d1eeb1b05443952f 100644 (file)
@@ -101,6 +101,7 @@ static int cpu_post_test_complex_2 (void)
 int cpu_post_test_complex (void)
 {
     int ret = 0;
+    int flag = disable_interrupts();
 
     if (ret == 0)
     {
@@ -117,6 +118,9 @@ int cpu_post_test_complex (void)
        post_log ("Error at complex test !\n");
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 0bd9e748f2aff2f6d15902e5010053ece5fd4139..2c7976ac311c1244731e69768f9a97f7a0092de0 100644 (file)
@@ -248,6 +248,7 @@ int cpu_post_test_cr (void)
     int ret = 0;
     unsigned int i;
     unsigned long cr_sav;
+    int flag = disable_interrupts();
 
     asm ( "mfcr %0" : "=r" (cr_sav) : );
 
@@ -347,6 +348,9 @@ int cpu_post_test_cr (void)
 
     asm ( "mtcr %0" : : "r" (cr_sav));
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 86bc2234cf58903ac73b999c7065ec08a22c4371..eccebb7ca142cdfb9224eca4ceb1219569565fdc 100644 (file)
@@ -178,6 +178,7 @@ int cpu_post_test_load (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     for (i = 0; i < cpu_post_load_size && ret == 0; i++)
     {
@@ -246,6 +247,9 @@ int cpu_post_test_load (void)
        }
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 5d3f5842811e6d72c8562ff0b1f2180ddb6cb02a..47135abd4ca431b28d7b82b551109f60200ff7d5 100644 (file)
@@ -44,6 +44,7 @@ int cpu_post_test_multi (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     if (ret == 0)
     {
@@ -72,6 +73,9 @@ int cpu_post_test_multi (void)
        post_log ("Error at multi test !\n");
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index 09ec48554e26f3d1fcd23cc964b5ac4bedb92a33..c96f263e3008b0c27ecbf3869b45bbb41dacfad1 100644 (file)
@@ -163,6 +163,7 @@ int cpu_post_test_store (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     for (i = 0; i < cpu_post_store_size && ret == 0; i++)
     {
@@ -226,6 +227,9 @@ int cpu_post_test_store (void)
        }
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }
 
index b2daa8804968ea628268235bea4e14e31d6ecedd..3683ac9956ad0387d0c4833e929276823e48b455 100644 (file)
@@ -47,6 +47,7 @@ int cpu_post_test_string (void)
 {
     int ret = 0;
     unsigned int i;
+    int flag = disable_interrupts();
 
     if (ret == 0)
     {
@@ -97,6 +98,9 @@ int cpu_post_test_string (void)
        post_log ("Error at string test !\n");
     }
 
+    if (flag)
+       enable_interrupts();
+
     return ret;
 }