diff --git a/arch/arm/src/goldfish/CMakeLists.txt b/arch/arm/src/goldfish/CMakeLists.txt new file mode 100644 index 00000000000..229763209b5 --- /dev/null +++ b/arch/arm/src/goldfish/CMakeLists.txt @@ -0,0 +1,27 @@ +# ############################################################################## +# arch/arm/src/goldfish/CMakeLists.txt +# +# Licensed to the Apache Software Foundation (ASF) under one or more contributor +# license agreements. See the NOTICE file distributed with this work for +# additional information regarding copyright ownership. The ASF licenses this +# file to you under the Apache License, Version 2.0 (the "License"); you may not +# use this file except in compliance with the License. You may obtain a copy of +# the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under +# the License. +# +# ############################################################################## +set(SRCS goldfish_boot.c goldfish_irq.c goldfish_pgalloc.c goldfish_memorymap.c + goldfish_serial.c goldfish_timer.c) + +if(CONFIG_SMP) + list(APPEND SRCS goldfish_cpuboot.c) +endif() + +target_sources(arch PRIVATE ${SRCS}) diff --git a/arch/arm/src/goldfish/Make.defs b/arch/arm/src/goldfish/Make.defs index bcef5069902..e3d93e34f77 100644 --- a/arch/arm/src/goldfish/Make.defs +++ b/arch/arm/src/goldfish/Make.defs @@ -21,7 +21,10 @@ include armv7-a/Make.defs # goldfish-specific C source files - -CHIP_CSRCS = goldfish_boot.c goldfish_cpuboot.c goldfish_irq.c +CHIP_CSRCS = goldfish_boot.c +CHIP_CSRCS += goldfish_irq.c goldfish_pgalloc.c CHIP_CSRCS += goldfish_memorymap.c goldfish_serial.c goldfish_timer.c -CHIP_CSRCS += goldfish_pgalloc.c + +ifeq ($(CONFIG_SMP),y) +CHIP_CSRCS += goldfish_cpuboot.c +endif diff --git a/arch/arm/src/goldfish/goldfish_cpuboot.c b/arch/arm/src/goldfish/goldfish_cpuboot.c index bea9a639aed..160731937c3 100644 --- a/arch/arm/src/goldfish/goldfish_cpuboot.c +++ b/arch/arm/src/goldfish/goldfish_cpuboot.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "arm_internal.h" @@ -116,10 +117,8 @@ void arm_cpu_boot(int cpu) /* The next thing that we expect to happen is for logic running on CPU0 * to call up_cpu_start() which generate an SGI and a context switch to * the configured NuttX IDLE task. + * Transfer control to the IDLE task. */ - for (; ; ) - { - asm("WFI"); - } + nx_idle_trampoline(); }