--- 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 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel