summaryrefslogtreecommitdiff
path: root/post
diff options
context:
space:
mode:
authorStefan Roese <sr@denx.de>2008-07-18 11:03:35 +0200
committerWolfgang Denk <wd@denx.de>2008-07-20 23:00:22 +0200
commit86446d3a5d9d3ca81e85d1ccd3accaaae6f8e3c9 (patch)
tree8bfd93d7e9c37dee1d24637ea93c72182f164aae /post
parent97a3bf268d096e0e97e54048448c35114edcf557 (diff)
POST: Add disable interrupts in some of the missing CPU POST tests
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>
Diffstat (limited to 'post')
-rw-r--r--post/lib_ppc/b.c4
-rw-r--r--post/lib_ppc/cmp.c4
-rw-r--r--post/lib_ppc/cmpi.c4
-rw-r--r--post/lib_ppc/complex.c4
-rw-r--r--post/lib_ppc/cr.c4
-rw-r--r--post/lib_ppc/load.c4
-rw-r--r--post/lib_ppc/multi.c4
-rw-r--r--post/lib_ppc/store.c4
-rw-r--r--post/lib_ppc/string.c4
9 files changed, 36 insertions, 0 deletions
diff --git a/post/lib_ppc/b.c b/post/lib_ppc/b.c
index 45b9ff26e86..7a2583dc747 100644
--- a/post/lib_ppc/b.c
+++ b/post/lib_ppc/b.c
@@ -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;
}
diff --git a/post/lib_ppc/cmp.c b/post/lib_ppc/cmp.c
index 8d80f86aafd..13809d417bb 100644
--- a/post/lib_ppc/cmp.c
+++ b/post/lib_ppc/cmp.c
@@ -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;
}
diff --git a/post/lib_ppc/cmpi.c b/post/lib_ppc/cmpi.c
index 92b4d57b1fd..5ecfe872a4f 100644
--- a/post/lib_ppc/cmpi.c
+++ b/post/lib_ppc/cmpi.c
@@ -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;
}
diff --git a/post/lib_ppc/complex.c b/post/lib_ppc/complex.c
index 271392a0e8c..4983c51919e 100644
--- a/post/lib_ppc/complex.c
+++ b/post/lib_ppc/complex.c
@@ -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;
}
diff --git a/post/lib_ppc/cr.c b/post/lib_ppc/cr.c
index 0bd9e748f2a..2c7976ac311 100644
--- a/post/lib_ppc/cr.c
+++ b/post/lib_ppc/cr.c
@@ -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;
}
diff --git a/post/lib_ppc/load.c b/post/lib_ppc/load.c
index 86bc2234cf5..eccebb7ca14 100644
--- a/post/lib_ppc/load.c
+++ b/post/lib_ppc/load.c
@@ -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;
}
diff --git a/post/lib_ppc/multi.c b/post/lib_ppc/multi.c
index 5d3f5842811..47135abd4ca 100644
--- a/post/lib_ppc/multi.c
+++ b/post/lib_ppc/multi.c
@@ -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;
}
diff --git a/post/lib_ppc/store.c b/post/lib_ppc/store.c
index 09ec48554e2..c96f263e300 100644
--- a/post/lib_ppc/store.c
+++ b/post/lib_ppc/store.c
@@ -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;
}
diff --git a/post/lib_ppc/string.c b/post/lib_ppc/string.c
index b2daa880496..3683ac9956a 100644
--- a/post/lib_ppc/string.c
+++ b/post/lib_ppc/string.c
@@ -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;
}