[rtems commit] i386: move idle thread into BSP layer
Gedare Bloom
gedare at rtems.org
Thu Mar 3 21:43:04 UTC 2016
Module: rtems
Branch: master
Commit: fd05a055e67128f2410629dba52f8c33e08d2297
Changeset: http://git.rtems.org/rtems/commit/?id=fd05a055e67128f2410629dba52f8c33e08d2297
Author: Gedare Bloom <gedare at rtems.org>
Date: Fri Jan 8 12:15:46 2016 -0500
i386: move idle thread into BSP layer
---
c/src/lib/libbsp/i386/pc386/Makefile.am | 1 +
c/src/lib/libbsp/i386/pc386/include/bsp.h | 3 +++
c/src/lib/libbsp/i386/pc386/startup/bspidle.S | 19 +++++++++++++++++++
cpukit/score/cpu/i386/cpu.c | 8 --------
cpukit/score/cpu/i386/rtems/score/cpu.h | 2 +-
5 files changed, 24 insertions(+), 9 deletions(-)
diff --git a/c/src/lib/libbsp/i386/pc386/Makefile.am b/c/src/lib/libbsp/i386/pc386/Makefile.am
index ac07741..75a56c9 100644
--- a/c/src/lib/libbsp/i386/pc386/Makefile.am
+++ b/c/src/lib/libbsp/i386/pc386/Makefile.am
@@ -148,6 +148,7 @@ include_HEADERS += ../../i386/shared/comm/uart.h
# startup
libbsp_a_SOURCES += ../../shared/bsppredriverhook.c
libbsp_a_SOURCES += startup/bspgetworkarea.c
+libbsp_a_SOURCES += startup/bspidle.S
libbsp_a_SOURCES += startup/bspstart.c
libbsp_a_SOURCES += startup/bspcmdline.c
libbsp_a_SOURCES += ../../shared/bspclean.c
diff --git a/c/src/lib/libbsp/i386/pc386/include/bsp.h b/c/src/lib/libbsp/i386/pc386/include/bsp.h
index d68af4d..cee5566 100644
--- a/c/src/lib/libbsp/i386/pc386/include/bsp.h
+++ b/c/src/lib/libbsp/i386/pc386/include/bsp.h
@@ -213,6 +213,9 @@ void rtems_irq_mngt_init(void); /* from 'irq_init.c' */
} while ( 0 )
#endif /* edison */
+void *bsp_idle_thread( uintptr_t ignored );
+#define BSP_IDLE_TASK_BODY bsp_idle_thread
+
void kbd_reset_setup(char *str, int *ints); /* from 'pc_keyb.c' */
size_t read_aux(char * buffer, size_t count); /* from 'ps2_mouse.c' */
diff --git a/c/src/lib/libbsp/i386/pc386/startup/bspidle.S b/c/src/lib/libbsp/i386/pc386/startup/bspidle.S
new file mode 100644
index 0000000..740671a
--- /dev/null
+++ b/c/src/lib/libbsp/i386/pc386/startup/bspidle.S
@@ -0,0 +1,19 @@
+/*
+ * Idle Thread Body
+ *
+ * COPYRIGHT (c) 2016.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.org/license/LICENSE.
+ */
+
+#include <rtems/asm.h>
+
+.p2align 4
+
+PUBLIC(bsp_idle_thread)
+SYM(bsp_idle_thread):
+hltloop: hlt
+ jmp hltloop
diff --git a/cpukit/score/cpu/i386/cpu.c b/cpukit/score/cpu/i386/cpu.c
index f22c4d3..17aa990 100644
--- a/cpukit/score/cpu/i386/cpu.c
+++ b/cpukit/score/cpu/i386/cpu.c
@@ -120,14 +120,6 @@ uint32_t _CPU_ISR_Get_level( void )
return level;
}
-void *_CPU_Thread_Idle_body( uintptr_t ignored )
-{
- while(1){
- __asm__ volatile ("hlt");
- }
- return NULL;
-}
-
struct Frame_ {
struct Frame_ *up;
uintptr_t pc;
diff --git a/cpukit/score/cpu/i386/rtems/score/cpu.h b/cpukit/score/cpu/i386/rtems/score/cpu.h
index d6828dc..dc9deee 100644
--- a/cpukit/score/cpu/i386/rtems/score/cpu.h
+++ b/cpukit/score/cpu/i386/rtems/score/cpu.h
@@ -117,7 +117,7 @@ extern "C" {
* not provide one.
*/
-#define CPU_PROVIDES_IDLE_THREAD_BODY TRUE
+#define CPU_PROVIDES_IDLE_THREAD_BODY FALSE
/*
* Define what is required to specify how the network to host conversion
More information about the vc
mailing list