[PATCH 2/7] i386: move idle thread into BSP layer
Gedare Bloom
gedare at rtems.org
Mon Feb 15 19:05:39 UTC 2016
---
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(-)
create mode 100644 c/src/lib/libbsp/i386/pc386/startup/bspidle.S
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 436c822..52eb511 100644
--- a/cpukit/score/cpu/i386/cpu.c
+++ b/cpukit/score/cpu/i386/cpu.c
@@ -116,14 +116,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 5a8e5d6..2a1b95b 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
--
1.9.1
More information about the devel
mailing list