From 8b27a78d22d46d3a5697dde729961068011830f4 Mon Sep 17 00:00:00 2001 From: Emma Ballantyne Date: Tue, 25 Feb 2025 14:54:23 +0000 Subject: [PATCH 1/5] arch/fwk: Remove interrupt driver Currently interrupt functions are passed to the framework through a driver struct that provides the functions as members of the struct. This is unneeded and can instead be replaced with a system where these functions are declared in the architecture files and simply used in the framework through linking. Signed-off-by: Emma Ballantyne Signed-off-by: James Chesterman --- arch/arm/aarch64/include/arch_helpers.h | 4 +- arch/arm/aarch64/src/arch_gic.c | 78 ++---- arch/arm/aarch64/src/arch_main.c | 10 +- arch/arm/arm-m/include/arch_helpers.h | 4 +- arch/arm/arm-m/include/arch_nvic.h | 4 +- arch/arm/arm-m/src/arch_main.c | 11 +- arch/arm/arm-m/src/arch_nvic.c | 85 ++---- arch/arm/armv8-a/include/arch_gic.h | 3 +- arch/arm/armv8-a/include/arch_helpers.h | 4 +- arch/arm/armv8-a/src/arch_gic.c | 88 +++--- arch/arm/armv8-a/src/arch_main.c | 8 +- arch/none/host/include/arch_helpers.h | 4 +- arch/none/host/include/arch_interrupt.h | 4 +- arch/none/host/src/arch_interrupt.c | 60 ++-- arch/none/host/src/arch_main.c | 8 +- arch/none/optee/include/arch_helpers.h | 15 +- arch/none/optee/include/arch_interrupt.h | 25 -- arch/none/optee/src/arch_interrupt.c | 64 ++--- arch/none/optee/src/arch_main.c | 25 +- framework/include/fwk_arch.h | 343 +++++++++++------------ framework/include/fwk_interrupt.h | 17 +- framework/include/fwk_module.h | 2 +- framework/src/fwk_arch.c | 42 +-- framework/src/fwk_interrupt.c | 132 ++------- framework/test/interrupt_functions.c | 139 +++++++++ 25 files changed, 506 insertions(+), 673 deletions(-) delete mode 100644 arch/none/optee/include/arch_interrupt.h create mode 100644 framework/test/interrupt_functions.c diff --git a/arch/arm/aarch64/include/arch_helpers.h b/arch/arm/aarch64/include/arch_helpers.h index ec8b3cd02..e03e8f4f7 100644 --- a/arch/arm/aarch64/include/arch_helpers.h +++ b/arch/arm/aarch64/include/arch_helpers.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -47,4 +47,6 @@ inline static void arch_suspend(void) __asm volatile("wfe"); } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/aarch64/src/arch_gic.c b/arch/arm/aarch64/src/arch_gic.c index 0217e2045..89bfe3eb6 100644 --- a/arch/arm/aarch64/src/arch_gic.c +++ b/arch/arm/aarch64/src/arch_gic.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -85,21 +85,7 @@ void irq_global(void) current_iar = INTERRUPT_ID_INVALID; } -static int global_enable(void) -{ - arch_interrupts_enable(0); - - return FWK_SUCCESS; -} - -static int global_disable(void) -{ - arch_interrupts_disable(); - - return FWK_SUCCESS; -} - -static int is_enabled(unsigned int interrupt, bool *enabled) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *enabled) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -120,7 +106,7 @@ static int is_enabled(unsigned int interrupt, bool *enabled) return FWK_SUCCESS; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -141,7 +127,7 @@ static int enable(unsigned int interrupt) return FWK_SUCCESS; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -162,7 +148,7 @@ static int disable(unsigned int interrupt) return FWK_SUCCESS; } -static int is_pending(unsigned int interrupt, bool *pending) +int arch_interrupt_is_pending(unsigned int interrupt, bool *pending) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -183,7 +169,7 @@ static int is_pending(unsigned int interrupt, bool *pending) return FWK_SUCCESS; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -203,7 +189,7 @@ static int set_pending(unsigned int interrupt) return FWK_SUCCESS; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { switch (interrupt_type_from_id(interrupt)) { case INTERRUPT_TYPE_SGI: @@ -223,7 +209,7 @@ static int clear_pending(unsigned int interrupt) return FWK_SUCCESS; } -static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) { struct isr_callback *entry; @@ -238,7 +224,7 @@ static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) return FWK_SUCCESS; } -static int set_isr_irq_param( +int arch_interrupt_set_isr_irq_param( unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t parameter) @@ -256,19 +242,31 @@ static int set_isr_irq_param( return FWK_SUCCESS; } -static int set_isr_dummy(void (*isr)(void)) +int arch_interrupt_set_isr_nmi(void (*isr)(void)) { return FWK_E_SUPPORT; } -static int set_isr_dummy_param( +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t), + uintptr_t parameter) +{ + return FWK_E_SUPPORT; +} + +int arch_interrupt_set_isr_dummy(void (*isr)(void)) +{ + return FWK_E_SUPPORT; +} + +int arch_interrupt_set_isr_dummy_param( void (*isr)(uintptr_t param), uintptr_t parameter) { return FWK_E_SUPPORT; } -static int get_current(unsigned int *interrupt) +int arch_interrupt_get_current(unsigned int *interrupt) { if (interrupt == NULL) { return FWK_E_PARAM; @@ -279,36 +277,12 @@ static int get_current(unsigned int *interrupt) return FWK_SUCCESS; } -static bool is_interrupt_context(void) +bool arch_interrupt_is_interrupt_context(void) { return current_iar != INTERRUPT_ID_INVALID; } -const struct fwk_arch_interrupt_driver arm_gic_driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr_irq, - .set_isr_irq_param = set_isr_irq_param, - .set_isr_nmi = set_isr_dummy, - .set_isr_nmi_param = set_isr_dummy_param, - .set_isr_fault = set_isr_dummy, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -int arch_gic_init(const struct fwk_arch_interrupt_driver **driver) +int arch_interrupt_init() { - if (driver == NULL) { - return FWK_E_PARAM; - } - - *driver = &arm_gic_driver; - return FWK_SUCCESS; } diff --git a/arch/arm/aarch64/src/arch_main.c b/arch/arm/aarch64/src/arch_main.c index ce0a60e44..a8a265411 100644 --- a/arch/arm/aarch64/src/arch_main.c +++ b/arch/arm/aarch64/src/arch_main.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -12,13 +12,7 @@ #include -extern int arch_gic_init(const struct fwk_arch_interrupt_driver **driver); - -static const struct fwk_arch_init_driver arch_init_driver = { - .interrupt = arch_gic_init, -}; - int arm_main(void) { - return fwk_arch_init(&arch_init_driver); + return fwk_arch_init(); } diff --git a/arch/arm/arm-m/include/arch_helpers.h b/arch/arm/arm-m/include/arch_helpers.h index dc6aa541d..90435cee5 100644 --- a/arch/arm/arm-m/include/arch_helpers.h +++ b/arch/arm/arm-m/include/arch_helpers.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2021-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -60,4 +60,6 @@ inline static void arch_suspend(void) __asm volatile("wfe"); } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/arm-m/include/arch_nvic.h b/arch/arm/arm-m/include/arch_nvic.h index cfc4bbaa2..89281121f 100644 --- a/arch/arm/arm-m/include/arch_nvic.h +++ b/arch/arm/arm-m/include/arch_nvic.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2020-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -20,6 +20,6 @@ * * \return Status code representing the result of the operation. */ -int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver); +int arch_interrupt_init(); #endif /* ARCH_NVIC_H */ diff --git a/arch/arm/arm-m/src/arch_main.c b/arch/arm/arm-m/src/arch_main.c index d73adadac..f19fa4ca3 100644 --- a/arch/arm/arm-m/src/arch_main.c +++ b/arch/arm/arm-m/src/arch_main.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -11,12 +11,9 @@ #include #include -#include - #include #include -#include /* * This variable is used to ensure spurious nested calls won't @@ -35,10 +32,6 @@ void _exit(int status) } #endif -static const struct fwk_arch_init_driver arch_init_driver = { - .interrupt = arch_nvic_init, -}; - #ifndef ARMV6M static void arch_init_ccr(void) { @@ -70,5 +63,5 @@ int main(void) arch_init_ccr(); #endif - return fwk_arch_init(&arch_init_driver); + return fwk_arch_init(); } diff --git a/arch/arm/arm-m/src/arch_nvic.c b/arch/arm/arm-m/src/arch_nvic.c index 5d3402aa4..78fa45a61 100644 --- a/arch/arm/arm-m/src/arch_nvic.c +++ b/arch/arm/arm-m/src/arch_nvic.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -22,7 +22,6 @@ #include #include -#include #include #include @@ -61,28 +60,28 @@ struct irq_callback { static struct irq_callback *callback; -static void irq_global(void) +void irq_global(void) { struct irq_callback *entry = &callback[__get_IPSR() - 1]; entry->func(entry->param); } -static int global_enable(void) +int arch_interrupt_global_enable(void) { __enable_irq(); return FWK_SUCCESS; } -static int global_disable(void) +int arch_interrupt_global_disable(void) { __disable_irq(); return FWK_SUCCESS; } -static int is_enabled(unsigned int interrupt, bool *enabled) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *enabled) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -93,7 +92,7 @@ static int is_enabled(unsigned int interrupt, bool *enabled) return FWK_SUCCESS; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -104,7 +103,7 @@ static int enable(unsigned int interrupt) return FWK_SUCCESS; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -115,7 +114,7 @@ static int disable(unsigned int interrupt) return FWK_SUCCESS; } -static int is_pending(unsigned int interrupt, bool *pending) +int arch_interrupt_is_pending(unsigned int interrupt, bool *pending) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -126,7 +125,7 @@ static int is_pending(unsigned int interrupt, bool *pending) return FWK_SUCCESS; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -137,7 +136,7 @@ static int set_pending(unsigned int interrupt) return FWK_SUCCESS; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -148,7 +147,7 @@ static int clear_pending(unsigned int interrupt) return FWK_SUCCESS; } -static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) { if (interrupt >= irq_count) { return FWK_E_PARAM; @@ -159,7 +158,7 @@ static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) return FWK_SUCCESS; } -static int set_isr_irq_param( +int arch_interrupt_set_isr_irq_param( unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t parameter) @@ -178,14 +177,16 @@ static int set_isr_irq_param( return FWK_SUCCESS; } -static int set_isr_nmi(void (*isr)(void)) +int arch_interrupt_set_isr_nmi(void (*isr)(void)) { NVIC_SetVector(NonMaskableInt_IRQn, (uint32_t)isr); return FWK_SUCCESS; } -static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter) +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t param), + uintptr_t parameter) { struct irq_callback *entry; @@ -198,7 +199,7 @@ static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter) return FWK_SUCCESS; } -static int set_isr_fault(void (*isr)(void)) +int arch_interrupt_set_isr_fault(void (*isr)(void)) { NVIC_SetVector(HardFault_IRQn, (uint32_t)isr); NVIC_SetVector(MemoryManagement_IRQn, (uint32_t)isr); @@ -208,7 +209,7 @@ static int set_isr_fault(void (*isr)(void)) return FWK_SUCCESS; } -static int get_current(unsigned int *interrupt) +int arch_interrupt_get_current(unsigned int *interrupt) { *interrupt = __get_IPSR(); @@ -228,7 +229,7 @@ static int get_current(unsigned int *interrupt) return FWK_SUCCESS; } -static bool is_interrupt_context(void) +bool arch_interrupt_is_interrupt_context(void) { /* Not an interrupt */ if (__get_IPSR() == 0) { @@ -238,31 +239,13 @@ static bool is_interrupt_context(void) return true; } -static const struct fwk_arch_interrupt_driver arch_nvic_driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr_irq, - .set_isr_irq_param = set_isr_irq_param, - .set_isr_nmi = set_isr_nmi, - .set_isr_nmi_param = set_isr_nmi_param, - .set_isr_fault = set_isr_fault, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -static void irq_invalid(void) +void arch_interrupt_irq_invalid(void) { - (void)disable(__get_IPSR()); + (void)arch_interrupt_disable(__get_IPSR()); } #ifndef ARMV6M -int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) +int arch_interrupt_init() { uint32_t ictr_intlinesnum; uint32_t align_entries; @@ -270,10 +253,6 @@ int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) uint32_t *vector; uint32_t irq; - if (driver == NULL) { - return FWK_E_PARAM; - } - /* Find the number of interrupt lines implemented in hardware */ # ifdef SCnSCB ictr_intlinesnum = SCnSCB->ICTR & SCnSCB_ICTR_INTLINESNUM_Msk; @@ -333,8 +312,9 @@ int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) NVIC_DisableIRQ((IRQn_Type)irq); NVIC_ClearPendingIRQ((IRQn_Type)irq); - /* Initialize all IRQ entries to point to the irq_invalid() handler */ - NVIC_SetVector((IRQn_Type)irq, (uint32_t)irq_invalid); + /* Initialize all IRQ entries to point to the + * arch_interrupt_irq_invalid() handler */ + NVIC_SetVector((IRQn_Type)irq, (uint32_t)arch_interrupt_irq_invalid); } __enable_irq(); @@ -343,21 +323,15 @@ int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk | SCB_SHCSR_BUSFAULTENA_Msk | SCB_SHCSR_USGFAULTENA_Msk; - *driver = &arch_nvic_driver; - return FWK_SUCCESS; } #else -int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) +int arch_interrupt_init() { uint32_t ictr_intlinesnum; uint32_t irq; - if (driver == NULL) { - return FWK_E_PARAM; - } - /* Find the number of interrupt lines implemented in hardware */ ictr_intlinesnum = 0; irq_count = (ictr_intlinesnum + 1) * 32; @@ -380,14 +354,13 @@ int arch_nvic_init(const struct fwk_arch_interrupt_driver **driver) NVIC_DisableIRQ((IRQn_Type)irq); NVIC_ClearPendingIRQ((IRQn_Type)irq); - /* Initialize all IRQ entries to point to the irq_invalid() handler */ - NVIC_SetVector((IRQn_Type)irq, (uint32_t)irq_invalid); + /* Initialize all IRQ entries to point to the + * arch_interrupt_irq_invalid() handler */ + NVIC_SetVector((IRQn_Type)irq, (uint32_t)arch_interrupt_irq_invalid); } __enable_irq(); - *driver = &arch_nvic_driver; - return FWK_SUCCESS; } #endif diff --git a/arch/arm/armv8-a/include/arch_gic.h b/arch/arm/armv8-a/include/arch_gic.h index d0a5a5de5..c0fc841c4 100644 --- a/arch/arm/armv8-a/include/arch_gic.h +++ b/arch/arm/armv8-a/include/arch_gic.h @@ -1,6 +1,6 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2021, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -129,7 +129,6 @@ #define RCAR_GICV_BASE U(0xF1060000) void gic_init(void); -int arm_gic_init(const struct fwk_arch_interrupt_driver **driver); void irq_global(uint32_t iid); #endif /* ARMV8A_GIC_H */ diff --git a/arch/arm/armv8-a/include/arch_helpers.h b/arch/arm/armv8-a/include/arch_helpers.h index 4d01e9db2..049b3cc31 100644 --- a/arch/arm/armv8-a/include/arch_helpers.h +++ b/arch/arm/armv8-a/include/arch_helpers.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2013-2023, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2013-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -599,4 +599,6 @@ inline static void arch_suspend(void) wfe(); } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/armv8-a/src/arch_gic.c b/arch/arm/armv8-a/src/arch_gic.c index ecf499361..2243bd17e 100644 --- a/arch/arm/armv8-a/src/arch_gic.c +++ b/arch/arm/armv8-a/src/arch_gic.c @@ -1,6 +1,6 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2024, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -357,19 +357,19 @@ void gic_init(void) /* --------------------------------------------------- */ -static int global_enable(void) +int arch_interrupt_global_enable(void) { __asm__ volatile("msr DAIFClr, #1"); /* FIQ */ return FWK_SUCCESS; } -static int global_disable(void) +int arch_interrupt_global_disable(void) { __asm__ volatile("msr DAIFSet, #1"); /* FIQ */ return FWK_SUCCESS; } -static int is_enabled(unsigned int interrupt, bool *enabled) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *enabled) { if (!IS_SUPPORT_INT(interrupt)) return FWK_E_PARAM; @@ -379,7 +379,7 @@ static int is_enabled(unsigned int interrupt, bool *enabled) return FWK_SUCCESS; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { if (!IS_SUPPORT_INT(interrupt)) return FWK_E_PARAM; @@ -389,7 +389,7 @@ static int enable(unsigned int interrupt) return FWK_SUCCESS; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { if (!IS_SUPPORT_INT(interrupt)) return FWK_E_PARAM; @@ -399,7 +399,7 @@ static int disable(unsigned int interrupt) return FWK_SUCCESS; } -static int is_pending(unsigned int interrupt, bool *pending) +int arch_interrupt_is_pending(unsigned int interrupt, bool *pending) { unsigned int bit; @@ -414,7 +414,7 @@ static int is_pending(unsigned int interrupt, bool *pending) return FWK_SUCCESS; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { unsigned int bit; @@ -427,7 +427,7 @@ static int set_pending(unsigned int interrupt) return FWK_SUCCESS; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { unsigned int bit; @@ -442,49 +442,49 @@ static int clear_pending(unsigned int interrupt) #else -static int global_enable(void) +int arch_interrupt_global_enable(void) { return FWK_SUCCESS; } -static int global_disable(void) +int arch_interrupt_global_disable(void) { return FWK_SUCCESS; } -static int is_enabled(unsigned int interrupt, bool *enabled) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *enabled) { return FWK_SUCCESS; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { return FWK_SUCCESS; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { return FWK_SUCCESS; } -static int is_pending(unsigned int interrupt, bool *pending) +int arch_interrupt_is_pending(unsigned int interrupt, bool *pending) { return FWK_SUCCESS; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { return FWK_SUCCESS; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { return FWK_SUCCESS; } #endif /* RCAR_SCMI_LIB */ -static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) { struct callback *entry; int ret; @@ -505,7 +505,7 @@ static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) return FWK_SUCCESS; } -static int set_isr_irq_param( +int arch_interrupt_set_isr_irq_param( unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t parameter) @@ -529,19 +529,31 @@ static int set_isr_irq_param( return FWK_SUCCESS; } -static int set_isr_dummy(void (*isr)(void)) +int arch_interrupt_set_isr_dummy(void (*isr)(void)) { return FWK_SUCCESS; } -static int set_isr_dummy_param( +int arch_interrupt_set_isr_dummy_param( void (*isr)(uintptr_t param), uintptr_t parameter) { return FWK_SUCCESS; } -static int get_current(unsigned int *interrupt) +int arch_interrupt_set_isr_nmi(void (*isr)(void)) +{ + return FWK_E_SUPPORT; +} + +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t), + uintptr_t parameter) +{ + return FWK_E_SUPPORT; +} + +int arch_interrupt_get_current(unsigned int *interrupt) { *interrupt = c_interrupt; @@ -552,7 +564,7 @@ static int get_current(unsigned int *interrupt) return FWK_SUCCESS; } -static bool is_interrupt_context(void) +bool arch_interrupt_is_interrupt_context(void) { /* Not an interrupt */ if (c_interrupt == 0) { @@ -562,25 +574,7 @@ static bool is_interrupt_context(void) return true; } -static const struct fwk_arch_interrupt_driver arm_gic_driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr_irq, - .set_isr_irq_param = set_isr_irq_param, - .set_isr_nmi = set_isr_dummy, - .set_isr_nmi_param = set_isr_dummy_param, - .set_isr_fault = set_isr_dummy, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -int arm_gic_init(const struct fwk_arch_interrupt_driver **driver) +int arch_interrupt_init() { /* * Allocate and initialize a table for the callback functions and their @@ -592,15 +586,5 @@ int arm_gic_init(const struct fwk_arch_interrupt_driver **driver) gic_init(); - /* - * Initialize all exception entries to point to the arm_exception_invalid() - * handler. - * - * Note: Initialization starts from entry 1 since entry 0 is not an - * exception pointer but the default stack pointer. - */ - - *driver = &arm_gic_driver; - return FWK_SUCCESS; } diff --git a/arch/arm/armv8-a/src/arch_main.c b/arch/arm/armv8-a/src/arch_main.c index 743a52d62..bf872ff9e 100644 --- a/arch/arm/armv8-a/src/arch_main.c +++ b/arch/arm/armv8-a/src/arch_main.c @@ -1,6 +1,6 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2022, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -37,10 +37,6 @@ void panic(void) wfi(); } -static struct fwk_arch_init_driver arch_init_driver = { - .interrupt = arm_gic_init, -}; - void arm_main(void) { int status; @@ -52,7 +48,7 @@ void arm_main(void) __asm__ volatile("msr cntv_ctl_el0, %0" ::"r"(cntv_ctl)); #endif /* BUILD_MODE_DEBUG */ - status = fwk_arch_init(&arch_init_driver); + status = fwk_arch_init(); if (status != FWK_SUCCESS) panic(); } diff --git a/arch/none/host/include/arch_helpers.h b/arch/none/host/include/arch_helpers.h index 5514f0b68..aa65c7ea6 100644 --- a/arch/none/host/include/arch_helpers.h +++ b/arch/none/host/include/arch_helpers.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -33,4 +33,6 @@ inline static void arch_suspend(void) { } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/arch/none/host/include/arch_interrupt.h b/arch/none/host/include/arch_interrupt.h index 5827c50f1..32872d26a 100644 --- a/arch/none/host/include/arch_interrupt.h +++ b/arch/none/host/include/arch_interrupt.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2020-2021, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2020-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -20,6 +20,6 @@ * * \return Status code representing the result of the operation. */ -int arch_interrupt_init(const struct fwk_arch_interrupt_driver **driver); +int arch_interrupt_init(); #endif /* ARCH_INTERRUPT_H */ diff --git a/arch/none/host/src/arch_interrupt.c b/arch/none/host/src/arch_interrupt.c index 64aee4df3..44570fffe 100644 --- a/arch/none/host/src/arch_interrupt.c +++ b/arch/none/host/src/arch_interrupt.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -14,52 +14,52 @@ #include #include -static int global_enable(void) +int arch_interrupt_global_enable(void) { return FWK_E_SUPPORT; } -static int global_disable(void) +int arch_interrupt_global_disable(void) { return FWK_E_SUPPORT; } -static int is_enabled(unsigned int interrupt, bool *state) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *state) { return FWK_E_SUPPORT; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int is_pending(unsigned int interrupt, bool *state) +int arch_interrupt_is_pending(unsigned int interrupt, bool *state) { return FWK_E_SUPPORT; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) { return FWK_E_SUPPORT; } -static int set_isr_irq_param( +int arch_interrupt_set_isr_irq_param( unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t parameter) @@ -67,54 +67,34 @@ static int set_isr_irq_param( return FWK_E_SUPPORT; } -static int set_isr_nmi(void (*isr)(void)) +int arch_interrupt_set_isr_nmi(void (*isr)(void)) { return FWK_E_SUPPORT; } -static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter) +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t param), + uintptr_t parameter) { return FWK_E_SUPPORT; } -static int set_isr_fault(void (*isr)(void)) +int arch_interrupt_set_isr_fault(void (*isr)(void)) { return FWK_E_SUPPORT; } -static int get_current(unsigned int *interrupt) +int arch_interrupt_get_current(unsigned int *interrupt) { return FWK_E_SUPPORT; } -static bool is_interrupt_context(void) +bool arch_interrupt_is_interrupt_context(void) { return false; } -static const struct fwk_arch_interrupt_driver driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr_irq, - .set_isr_irq_param = set_isr_irq_param, - .set_isr_nmi = set_isr_nmi, - .set_isr_nmi_param = set_isr_nmi_param, - .set_isr_fault = set_isr_fault, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -int arch_interrupt_init(const struct fwk_arch_interrupt_driver **_driver) -{ - if (_driver == NULL) - return FWK_E_PARAM; - - *_driver = &driver; +int arch_interrupt_init() +{ return FWK_SUCCESS; } diff --git a/arch/none/host/src/arch_main.c b/arch/none/host/src/arch_main.c index c17b32596..376b84779 100644 --- a/arch/none/host/src/arch_main.c +++ b/arch/none/host/src/arch_main.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2021, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -23,15 +23,11 @@ static noreturn void panic(void) exit(1); } -static const struct fwk_arch_init_driver arch_init_driver = { - .interrupt = arch_interrupt_init, -}; - int main(void) { int status; - status = fwk_arch_init(&arch_init_driver); + status = fwk_arch_init(); if (status != FWK_SUCCESS) panic(); } diff --git a/arch/none/optee/include/arch_helpers.h b/arch/none/optee/include/arch_helpers.h index ab3526fa7..47b377228 100644 --- a/arch/none/optee/include/arch_helpers.h +++ b/arch/none/optee/include/arch_helpers.h @@ -1,6 +1,7 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2022, Linaro Limited and Contributors. All rights reserved. + * Copyright (c) 2022-2025, Linaro Limited and Contributors. All rights + * reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -33,4 +34,16 @@ inline static void arch_suspend(void) { } +/*! + * \brief Initialize the architecture interrupt management component. + * + * \param[out] Pointer to the interrupt driver. + * + * \retval ::FWK_E_PANIC The operation failed. + * \retval ::FWK_SUCCESS The operation succeeded. + * + * \return Status code representing the result of the operation. + */ +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/arch/none/optee/include/arch_interrupt.h b/arch/none/optee/include/arch_interrupt.h deleted file mode 100644 index 372a60fef..000000000 --- a/arch/none/optee/include/arch_interrupt.h +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Arm SCP/MCP Software - * Copyright (c) 2020-2022, Arm Limited and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#ifndef ARCH_INTERRUPT_H -#define ARCH_INTERRUPT_H - -#include - -/*! - * \brief Initialize the architecture interrupt management component. - * - * \param[out] Pointer to the interrupt driver. - * - * \retval ::FWK_E_PANIC The operation failed. - * \retval ::FWK_SUCCESS The operation succeeded. - * - * \return Status code representing the result of the operation. - */ -int arch_interrupt_init(const struct fwk_arch_interrupt_driver **driver); - -#endif /* ARCH_INTERRUPT_H */ diff --git a/arch/none/optee/src/arch_interrupt.c b/arch/none/optee/src/arch_interrupt.c index 362bf19b2..0a35d69e6 100644 --- a/arch/none/optee/src/arch_interrupt.c +++ b/arch/none/optee/src/arch_interrupt.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -11,57 +11,57 @@ #include #include +#include + #include #include -#include - -static int global_enable(void) +int arch_interrupt_global_enable(void) { return FWK_E_SUPPORT; } -static int global_disable(void) +int arch_interrupt_global_disable(void) { return FWK_E_SUPPORT; } -static int is_enabled(unsigned int interrupt, bool *state) +int arch_interrupt_is_enabled(unsigned int interrupt, bool *state) { return FWK_E_SUPPORT; } -static int enable(unsigned int interrupt) +int arch_interrupt_enable(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int disable(unsigned int interrupt) +int arch_interrupt_disable(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int is_pending(unsigned int interrupt, bool *state) +int arch_interrupt_is_pending(unsigned int interrupt, bool *state) { return FWK_E_SUPPORT; } -static int set_pending(unsigned int interrupt) +int arch_interrupt_set_pending(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int clear_pending(unsigned int interrupt) +int arch_interrupt_clear_pending(unsigned int interrupt) { return FWK_E_SUPPORT; } -static int set_isr_irq(unsigned int interrupt, void (*isr)(void)) +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) { return FWK_E_SUPPORT; } -static int set_isr_irq_param( +int arch_interrupt_set_isr_irq_param( unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t parameter) @@ -69,54 +69,34 @@ static int set_isr_irq_param( return FWK_E_SUPPORT; } -static int set_isr_nmi(void (*isr)(void)) +int arch_interrupt_set_isr_nmi(void (*isr)(void)) { return FWK_E_SUPPORT; } -static int set_isr_nmi_param(void (*isr)(uintptr_t param), uintptr_t parameter) +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t param), + uintptr_t parameter) { return FWK_E_SUPPORT; } -static int set_isr_fault(void (*isr)(void)) +int arch_interrupt_set_isr_fault(void (*isr)(void)) { return FWK_E_SUPPORT; } -static int get_current(unsigned int *interrupt) +int arch_interrupt_get_current(unsigned int *interrupt) { return FWK_E_SUPPORT; } -static bool is_interrupt_context(void) +bool arch_interrupt_is_interrupt_context(void) { return false; } -static const struct fwk_arch_interrupt_driver driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr_irq, - .set_isr_irq_param = set_isr_irq_param, - .set_isr_nmi = set_isr_nmi, - .set_isr_nmi_param = set_isr_nmi_param, - .set_isr_fault = set_isr_fault, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -int arch_interrupt_init(const struct fwk_arch_interrupt_driver **_driver) -{ - if (_driver == NULL) - return FWK_E_PARAM; - - *_driver = &driver; +int arch_interrupt_init() +{ return FWK_SUCCESS; } diff --git a/arch/none/optee/src/arch_main.c b/arch/none/optee/src/arch_main.c index 5ae2cb863..dff9a23e7 100644 --- a/arch/none/optee/src/arch_main.c +++ b/arch/none/optee/src/arch_main.c @@ -1,38 +1,35 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2022-2023, Linaro Limited and Contributors. All rights reserved. + * Copyright (c) 2022-2025, Linaro Limited and Contributors. All rights + * reserved. * * SPDX-License-Identifier: BSD-3-Clause */ +#include + +#include + #include #include #include #include #include #include -#include +#include +#include + +#include #include #include #include #include -#include - -#include - -#include -#include - -static const struct fwk_arch_init_driver scmi_init_driver = { - .interrupt = arch_interrupt_init, -}; - int scmi_arch_init(void) { int status; - status = fwk_arch_init(&scmi_init_driver); + status = fwk_arch_init(); fwk_log_flush(); diff --git a/framework/include/fwk_arch.h b/framework/include/fwk_arch.h index 6aa0b1b23..c0dd0c342 100644 --- a/framework/include/fwk_arch.h +++ b/framework/include/fwk_arch.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -26,189 +26,162 @@ */ /*! - * \brief Interrupt driver interface. - * - * \details The interrupt driver interface allows the framework to provide - * architecture-specific handling of the system interrupts. - */ -struct fwk_arch_interrupt_driver { - /*! - * \brief Enable interrupts. - * - * \retval ::FWK_SUCCESS Operation succeeded. - */ - int (*global_enable)(void); - - /*! - * \brief Disable interrupts. - * - * \retval ::FWK_SUCCESS Operation succeeded. - */ - int (*global_disable)(void); - - /*! - * \brief Test whether an interrupt is enabled. - * - * \param interrupt Interrupt number. - * \param [out] enabled \c true if the interrupt is enabled, else \c false. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*is_enabled)(unsigned int interrupt, bool *enabled); - - /*! - * \brief Enable an interrupt. - * - * \param interrupt Interrupt number. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*enable)(unsigned int interrupt); - - /*! - * \brief Disable an interrupt. - * - * \param interrupt Interrupt number. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*disable)(unsigned int interrupt); - - /*! - * \brief Check if an interrupt is pending. - * - * \param interrupt Interrupt number. - * \param [out] pending \c true if the interrupt is pending, else \c false. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*is_pending)(unsigned int interrupt, bool *pending); - - /*! - * \brief Set an interrupt as pending. - * - * \param interrupt Interrupt number. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_pending)(unsigned int interrupt); - - /*! - * \brief Clear a pending interrupt. - * - * \param interrupt Interrupt number. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*clear_pending)(unsigned int interrupt); - - /*! - * \brief Set an IRQ interrupt service routine. - * - * \param interrupt Interrupt number. - * \param isr Pointer to the interrupt service routine function. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_isr_irq)(unsigned int interrupt, void (*isr)(void)); - - /*! - * \brief Set an IRQ interrupt service routine that should receive a - * parameter. - * - * \param interrupt Interrupt number. - * \param isr Pointer to the interrupt service routine function. - * \param parameter Parameter that should be passed to the isr function. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_isr_irq_param)(unsigned int interrupt, - void (*isr)(uintptr_t param), - uintptr_t parameter); - - /*! - * \brief Set the interrupt service routine for the non-maskable interrupt - * (NMI). - * - * \param isr Pointer to the NMI interrupt service routine function. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_isr_nmi)(void (*isr)(void)); - - /*! - * \brief Set the interrupt service routine for the non-maskable interrupt - * (NMI) that should receive a parameter. - * - * \param isr Pointer to the NMI interrupt service routine function. - * \param parameter Parameter that should be passed to the isr function. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_isr_nmi_param)(void (*isr)(uintptr_t param), uintptr_t parameter); - - /*! - * \brief Set the fault interrupt service routine. - * - * \param isr Pointer to the fault interrupt service routine function. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ - int (*set_isr_fault)(void (*isr)(void)); - - /*! - * \brief Get the interrupt number for the current interrupt service routine - * being processed. - * - * \param [out] interrupt Interrupt number. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - * \retval ::FWK_E_STATE An interrupt is not currently being serviced. - */ - int (*get_current)(unsigned int *interrupt); - - /*! - * \brief Check if in interrupt context. - * - * \retval true if in an interrupt context. - * \retval false not in an interrupt context. - */ - bool (*is_interrupt_context)(void); -}; - -/*! - * \brief Initialization driver interface. - * - * \details The initialization driver interface allows the framework to request - * low-level (architecture-specific) initialization. - */ -struct fwk_arch_init_driver { - /*! - * \brief Interrupt driver initialization. - * - * \details This handler is used by the framework library to request the - * interrupt driver. - * - * \param [out] driver Pointer to an interrupt driver. - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM The parameter received by the handler is invalid. - * \retval ::FWK_E_PANIC Unrecoverable initialization error. - */ - int (*interrupt)(const struct fwk_arch_interrupt_driver **driver); -}; + * \brief Enable interrupts. + * + * \retval ::FWK_SUCCESS Operation succeeded. + */ +int arch_interrupt_global_enable(void); + +/*! + * \brief Disable interrupts. + * + * \retval ::FWK_SUCCESS Operation succeeded. + */ +int arch_interrupt_global_disable(void); + +/*! + * \brief Test whether an interrupt is enabled. + * + * \param interrupt Interrupt number. + * \param [out] enabled \c true if the interrupt is enabled, else \c false. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_is_enabled(unsigned int interrupt, bool *enabled); + +/*! + * \brief Enable an interrupt. + * + * \param interrupt Interrupt number. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_enable(unsigned int interrupt); + +/*! + * \brief Disable an interrupt. + * + * \param interrupt Interrupt number. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_disable(unsigned int interrupt); + +/*! + * \brief Check if an interrupt is pending. + * + * \param interrupt Interrupt number. + * \param [out] pending \c true if the interrupt is pending, else \c false. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_is_pending(unsigned int interrupt, bool *pending); + +/*! + * \brief Set an interrupt as pending. + * + * \param interrupt Interrupt number. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_pending(unsigned int interrupt); + +/*! + * \brief Clear a pending interrupt. + * + * \param interrupt Interrupt number. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_clear_pending(unsigned int interrupt); + +/*! + * \brief Set an IRQ interrupt service routine. + * + * \param interrupt Interrupt number. + * \param isr Pointer to the interrupt service routine function. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)); + +/*! + * \brief Set an IRQ interrupt service routine that should receive a + * parameter. + * + * \param interrupt Interrupt number. + * \param isr Pointer to the interrupt service routine function. + * \param parameter Parameter that should be passed to the isr function. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_isr_irq_param( + unsigned int interrupt, + void (*isr)(uintptr_t param), + uintptr_t parameter); + +/*! + * \brief Set the interrupt service routine for the non-maskable interrupt + * (NMI). + * + * \param isr Pointer to the NMI interrupt service routine function. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_isr_nmi(void (*isr)(void)); + +/*! + * \brief Set the interrupt service routine for the non-maskable interrupt + * (NMI) that should receive a parameter. + * + * \param isr Pointer to the NMI interrupt service routine function. + * \param parameter Parameter that should be passed to the isr function. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_isr_nmi_param( + void (*isr)(uintptr_t param), + uintptr_t parameter); + +/*! + * \brief Set the fault interrupt service routine. + * + * \param isr Pointer to the fault interrupt service routine function. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + */ +int arch_interrupt_set_isr_fault(void (*isr)(void)); + +/*! + * \brief Get the interrupt number for the current interrupt service routine + * being processed. + * + * \param [out] interrupt Interrupt number. + * + * \retval ::FWK_SUCCESS Operation succeeded. + * \retval ::FWK_E_PARAM One or more parameters were invalid. + * \retval ::FWK_E_STATE An interrupt is not currently being serviced. + */ +int arch_interrupt_get_current(unsigned int *interrupt); + +/*! + * \brief Check if in interrupt context. + * + * \retval true if in an interrupt context. + * \retval false not in an interrupt context. + */ +bool arch_interrupt_is_interrupt_context(void); /*! * \brief Initialize the framework library. @@ -220,7 +193,7 @@ struct fwk_arch_init_driver { * \retval ::FWK_E_PARAM One or more parameters were invalid. * \retval ::FWK_E_PANIC Unrecoverable initialization error. */ -int fwk_arch_init(const struct fwk_arch_init_driver *driver); +int fwk_arch_init(); /*! * \brief Stop the framework library. diff --git a/framework/include/fwk_interrupt.h b/framework/include/fwk_interrupt.h index 2c0a2af27..15f9e72ab 100644 --- a/framework/include/fwk_interrupt.h +++ b/framework/include/fwk_interrupt.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -15,9 +15,7 @@ #include #include -#if FWK_HAS_INCLUDE() -# include -#endif +#include #include #include @@ -64,16 +62,6 @@ */ #define FWK_INTERRUPT_EXCEPTION (UINT_MAX - 2) -/*! - * \brief Register interrupt driver in the framework. - * - * \param driver Interrupt driver instance to register - * - * \retval ::FWK_SUCCESS Operation succeeded. - * \retval ::FWK_E_PARAM One or more parameters were invalid. - */ -int fwk_interrupt_init(const struct fwk_arch_interrupt_driver *driver); - /*! * \brief Enable interrupts. * @@ -94,6 +82,7 @@ inline static unsigned int fwk_interrupt_global_disable(void) return arch_interrupts_disable(); } +int fwk_arch_interrupt_init(); /*! * \brief Test whether an interrupt is enabled. * diff --git a/framework/include/fwk_module.h b/framework/include/fwk_module.h index 89abe86f6..3663e887a 100644 --- a/framework/include/fwk_module.h +++ b/framework/include/fwk_module.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * diff --git a/framework/src/fwk_arch.c b/framework/src/fwk_arch.c index bc5eb0e8b..f40b497e4 100644 --- a/framework/src/fwk_arch.c +++ b/framework/src/fwk_arch.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2023, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -20,6 +20,7 @@ #include +#include #include #include #include @@ -28,45 +29,10 @@ #include -extern int fwk_interrupt_init(const struct fwk_arch_interrupt_driver *driver); - -static int fwk_arch_interrupt_init(int (*interrupt_init_handler)( - const struct fwk_arch_interrupt_driver **driver)) -{ - /* Initialize interrupt management */ - int status; - const struct fwk_arch_interrupt_driver *driver; - - /* - * Retrieve a pointer to the interrupt management driver from the - * architecture layer. - */ - status = interrupt_init_handler(&driver); - if (status != FWK_SUCCESS) { - return FWK_E_PANIC; - } - - /* Initialize the interrupt management component */ - status = fwk_interrupt_init(driver); - if (status != FWK_SUCCESS) { - return FWK_E_PANIC; - } - - return FWK_SUCCESS; -} - -int fwk_arch_init(const struct fwk_arch_init_driver *driver) +int fwk_arch_init() { int status; - if (driver == NULL) { - return FWK_E_PARAM; - } - - if (driver->interrupt == NULL) { - return FWK_E_PARAM; - } - fwk_module_init(); status = fwk_io_init(); @@ -80,7 +46,7 @@ int fwk_arch_init(const struct fwk_arch_init_driver *driver) } /* Initialize interrupt management */ - status = fwk_arch_interrupt_init(driver->interrupt); + status = fwk_arch_interrupt_init(); if (!fwk_expect(status == FWK_SUCCESS)) { return FWK_E_PANIC; } diff --git a/framework/src/fwk_interrupt.c b/framework/src/fwk_interrupt.c index 4f8730f30..7987f3b33 100644 --- a/framework/src/fwk_interrupt.c +++ b/framework/src/fwk_interrupt.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * @@ -14,143 +14,63 @@ #include #include -#include -#include +#include -static bool initialized; -static const struct fwk_arch_interrupt_driver *fwk_interrupt_driver; +#include -int fwk_interrupt_init(const struct fwk_arch_interrupt_driver *driver) +int fwk_arch_interrupt_init() { - /* Validate driver by checking that all function pointers are non-null */ - if (driver == NULL) { - return FWK_E_PARAM; - } - if (driver->global_enable == NULL) { - return FWK_E_PARAM; - } - if (driver->global_disable == NULL) { - return FWK_E_PARAM; - } - if (driver->is_enabled == NULL) { - return FWK_E_PARAM; - } - if (driver->enable == NULL) { - return FWK_E_PARAM; - } - if (driver->disable == NULL) { - return FWK_E_PARAM; - } - if (driver->is_pending == NULL) { - return FWK_E_PARAM; - } - if (driver->set_pending == NULL) { - return FWK_E_PARAM; - } - if (driver->clear_pending == NULL) { - return FWK_E_PARAM; - } - if (driver->set_isr_irq == NULL) { - return FWK_E_PARAM; - } - if (driver->set_isr_irq_param == NULL) { - return FWK_E_PARAM; - } - if (driver->set_isr_nmi == NULL) { - return FWK_E_PARAM; - } - if (driver->set_isr_nmi_param == NULL) { - return FWK_E_PARAM; - } - if (driver->set_isr_fault == NULL) { - return FWK_E_PARAM; - } - if (driver->get_current == NULL) { - return FWK_E_PARAM; - } - - fwk_interrupt_driver = driver; - initialized = true; - - return FWK_SUCCESS; + return arch_interrupt_init(); } int fwk_interrupt_is_enabled(unsigned int interrupt, bool *enabled) { - if (!initialized) { - return FWK_E_INIT; - } - if (enabled == NULL) { return FWK_E_PARAM; } - return fwk_interrupt_driver->is_enabled(interrupt, enabled); + return arch_interrupt_is_enabled(interrupt, enabled); } int fwk_interrupt_enable(unsigned int interrupt) { - if (!initialized) { - return FWK_E_INIT; - } - - return fwk_interrupt_driver->enable(interrupt); + return arch_interrupt_enable(interrupt); } int fwk_interrupt_disable(unsigned int interrupt) { - if (!initialized) { - return FWK_E_INIT; - } - - return fwk_interrupt_driver->disable(interrupt); + return arch_interrupt_disable(interrupt); } int fwk_interrupt_is_pending(unsigned int interrupt, bool *pending) { - if (!initialized) { - return FWK_E_INIT; - } - if (pending == NULL) { return FWK_E_PARAM; } - return fwk_interrupt_driver->is_pending(interrupt, pending); + return arch_interrupt_is_pending(interrupt, pending); } int fwk_interrupt_set_pending(unsigned int interrupt) { - if (!initialized) { - return FWK_E_INIT; - } - - return fwk_interrupt_driver->set_pending(interrupt); + return arch_interrupt_set_pending(interrupt); } int fwk_interrupt_clear_pending(unsigned int interrupt) { - if (!initialized) { - return FWK_E_INIT; - } - - return fwk_interrupt_driver->clear_pending(interrupt); + return arch_interrupt_clear_pending(interrupt); } int fwk_interrupt_set_isr(unsigned int interrupt, void (*isr)(void)) { - if (!initialized) { - return FWK_E_INIT; - } - if (isr == NULL) { return FWK_E_PARAM; } if (interrupt == FWK_INTERRUPT_NMI) { - return fwk_interrupt_driver->set_isr_nmi(isr); + return arch_interrupt_set_isr_nmi(isr); } else { - return fwk_interrupt_driver->set_isr_irq(interrupt, isr); + return arch_interrupt_set_isr_irq(interrupt, isr); } } @@ -158,53 +78,37 @@ int fwk_interrupt_set_isr_param(unsigned int interrupt, void (*isr)(uintptr_t param), uintptr_t param) { - if (!initialized) { - return FWK_E_INIT; - } - if (isr == NULL) { return FWK_E_PARAM; } if (interrupt == FWK_INTERRUPT_NMI) { - return fwk_interrupt_driver->set_isr_nmi_param(isr, param); + return arch_interrupt_set_isr_nmi_param(isr, param); } else { - return fwk_interrupt_driver->set_isr_irq_param(interrupt, isr, param); + return arch_interrupt_set_isr_irq_param(interrupt, isr, param); } } int fwk_interrupt_get_current(unsigned int *interrupt) { - if (!initialized) { - return FWK_E_INIT; - } - if (interrupt == NULL) { return FWK_E_PARAM; } - return fwk_interrupt_driver->get_current(interrupt); + return arch_interrupt_get_current(interrupt); } bool fwk_is_interrupt_context(void) { - if (!initialized) { - return false; - } - - return fwk_interrupt_driver->is_interrupt_context(); + return arch_interrupt_is_interrupt_context(); } /* This function is only for internal use by the framework */ int fwk_interrupt_set_isr_fault(void (*isr)(void)) { - if (!initialized) { - return FWK_E_INIT; - } - if (isr == NULL) { return FWK_E_PARAM; } - return fwk_interrupt_driver->set_isr_fault(isr); + return arch_interrupt_set_isr_fault(isr); } diff --git a/framework/test/interrupt_functions.c b/framework/test/interrupt_functions.c new file mode 100644 index 000000000..c60d81b91 --- /dev/null +++ b/framework/test/interrupt_functions.c @@ -0,0 +1,139 @@ +/* + * Arm SCP/MCP Software + * Copyright (c) 2025, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "interrupt_functions.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include + +int init_return_val; +int is_enabled_return_val; +int enable_return_val; +int disable_return_val; +int is_pending_return_val; +int set_pending_return_val; +int clear_pending_return_val; +int set_isr_return_val; +int set_isr_param_return_val; +int set_isr_nmi_return_val; +int set_isr_nmi_param_return_val; +int set_isr_fault_return_val; +int get_current_return_val; + +void fake_isr(void) +{ + return; +} + +void fake_isr_param(uintptr_t param) +{ + return; +} + +int arch_interrupt_init(void) +{ + return init_return_val; +} + +int arch_interrupt_global_enable(void) +{ + return FWK_SUCCESS; +} + +int arch_interrupt_global_disable(void) +{ + return FWK_SUCCESS; +} + +int arch_interrupt_is_enabled(unsigned int interrupt, bool *state) +{ + return is_enabled_return_val; +} + +int arch_interrupt_enable(unsigned int interrupt) +{ + return enable_return_val; +} + +int arch_interrupt_disable(unsigned int interrupt) +{ + return disable_return_val; +} + +int arch_interrupt_is_pending(unsigned int interrupt, bool *state) +{ + return is_pending_return_val; +} + +int arch_interrupt_set_pending(unsigned int interrupt) +{ + return set_pending_return_val; +} + +int arch_interrupt_clear_pending(unsigned int interrupt) +{ + return clear_pending_return_val; +} + +int arch_interrupt_set_isr(unsigned int interrupt, void (*isr)(void)) +{ + return set_isr_return_val; +} + +int arch_interrupt_set_isr_param( + unsigned int interrupt, + void (*isr)(uintptr_t p), + uintptr_t p) +{ + return set_isr_param_return_val; +} + +int arch_interrupt_set_isr_nmi(void (*isr)(void)) +{ + return set_isr_nmi_return_val; +} + +int arch_interrupt_set_isr_irq(unsigned int interrupt, void (*isr)(void)) +{ + return set_isr_return_val; +} + +int arch_interrupt_set_isr_irq_param( + unsigned int interrupt, + void (*isr)(uintptr_t param), + uintptr_t parameter) +{ + return set_isr_param_return_val; +} + +int arch_interrupt_set_isr_nmi_param(void (*isr)(uintptr_t p), uintptr_t p) +{ + return set_isr_nmi_param_return_val; +} + +int arch_interrupt_set_isr_fault(void (*isr)(void)) +{ + return set_isr_fault_return_val; +} + +int arch_interrupt_get_current(unsigned int *interrupt) +{ + return get_current_return_val; +} + +bool arch_interrupt_is_interrupt_context(void) +{ + return (get_current_return_val == FWK_SUCCESS); +} -- GitLab From 939d1be52a0954d202ad5d65dd05249267e62397 Mon Sep 17 00:00:00 2001 From: Emma Ballantyne Date: Tue, 25 Feb 2025 15:03:33 +0000 Subject: [PATCH 2/5] fwk: Fix framework tests This patch adds support for the fwk_tests to work with the new driverless interrupt system, as well as separating header files needed for these tests into their own include sub-directory. Signed-off-by: Emma Ballantyne Signed-off-by: James Chesterman --- framework/src/fwk_interrupt.c | 2 - framework/test/CMakeLists.txt | 1 + framework/test/{ => include}/arch_helpers.h | 5 +- framework/test/{ => include}/fwk_module_idx.h | 0 framework/test/{ => include}/fwk_test.h | 0 framework/test/include/interrupt_functions.h | 33 ++++ .../test_fwk_module_module_idx.h | 0 framework/test/test_fwk_interrupt.c | 179 +----------------- 8 files changed, 46 insertions(+), 174 deletions(-) rename framework/test/{ => include}/arch_helpers.h (89%) rename framework/test/{ => include}/fwk_module_idx.h (100%) rename framework/test/{ => include}/fwk_test.h (100%) create mode 100644 framework/test/include/interrupt_functions.h rename framework/test/{ => include}/test_fwk_module_module_idx.h (100%) diff --git a/framework/src/fwk_interrupt.c b/framework/src/fwk_interrupt.c index 7987f3b33..10c02f177 100644 --- a/framework/src/fwk_interrupt.c +++ b/framework/src/fwk_interrupt.c @@ -16,8 +16,6 @@ #include -#include - int fwk_arch_interrupt_init() { return arch_interrupt_init(); diff --git a/framework/test/CMakeLists.txt b/framework/test/CMakeLists.txt index f0b2d8ae2..023c5d5b4 100644 --- a/framework/test/CMakeLists.txt +++ b/framework/test/CMakeLists.txt @@ -134,6 +134,7 @@ list(APPEND COMMON_SRC ${FWK_SRC_ROOT}/fwk_delayed_resp.c) list(APPEND COMMON_SRC ${FWK_SRC_ROOT}/fwk_time.c) list(APPEND COMMON_SRC ${FWK_SRC_ROOT}/fwk_trace.c) list(APPEND COMMON_SRC ${FWK_SRC_ROOT}/fwk_status.c) +list(APPEND COMMON_SRC ${FWK_TEST_ROOT}/interrupt_functions.c) # CMake internal function enables testing for this directory enable_testing() diff --git a/framework/test/arch_helpers.h b/framework/test/include/arch_helpers.h similarity index 89% rename from framework/test/arch_helpers.h rename to framework/test/include/arch_helpers.h index 2c4de7096..b298229c2 100644 --- a/framework/test/arch_helpers.h +++ b/framework/test/include/arch_helpers.h @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -11,6 +11,7 @@ * This variable is used to ensure spurious nested calls won't * enable interrupts. This is been defined in fwk_test.c */ + extern unsigned int critical_section_nest_level; /*! @@ -44,4 +45,6 @@ inline static void arch_suspend(void) { } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/framework/test/fwk_module_idx.h b/framework/test/include/fwk_module_idx.h similarity index 100% rename from framework/test/fwk_module_idx.h rename to framework/test/include/fwk_module_idx.h diff --git a/framework/test/fwk_test.h b/framework/test/include/fwk_test.h similarity index 100% rename from framework/test/fwk_test.h rename to framework/test/include/fwk_test.h diff --git a/framework/test/include/interrupt_functions.h b/framework/test/include/interrupt_functions.h new file mode 100644 index 000000000..05f44c070 --- /dev/null +++ b/framework/test/include/interrupt_functions.h @@ -0,0 +1,33 @@ +/* + * Arm SCP/MCP Software + * Copyright (c) 2025, Arm Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef INTERRUPT_FUNCTIONS_H_ +#define INTERRUPT_FUNCTIONS_H_ + +#include + +#include + +extern int init_return_val; +extern int is_enabled_return_val; +extern int enable_return_val; +extern int disable_return_val; +extern int is_pending_return_val; +extern int set_pending_return_val; +extern int clear_pending_return_val; +extern int set_isr_return_val; +extern int set_isr_param_return_val; +extern int set_isr_nmi_return_val; +extern int set_isr_nmi_param_return_val; +extern int set_isr_fault_return_val; +extern int get_current_return_val; + +void fake_isr(void); +void fake_isr_param(uintptr_t param); +void test_case_setup(void); + +#endif /* INTERRUPT_FUNCTIONS_H_ */ diff --git a/framework/test/test_fwk_module_module_idx.h b/framework/test/include/test_fwk_module_module_idx.h similarity index 100% rename from framework/test/test_fwk_module_module_idx.h rename to framework/test/include/test_fwk_module_module_idx.h diff --git a/framework/test/test_fwk_interrupt.c b/framework/test/test_fwk_interrupt.c index b6395c65e..0b058dcd6 100644 --- a/framework/test/test_fwk_interrupt.c +++ b/framework/test/test_fwk_interrupt.c @@ -1,9 +1,11 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ +#include "interrupt_functions.h" + #include #include @@ -14,135 +16,17 @@ #include #include -#include +#include #define INTERRUPT_ID 42 /* * Variables for the mock functions */ -static int is_enabled_return_val; -static int enable_return_val; -static int disable_return_val; -static int is_pending_return_val; -static int set_pending_return_val; -static int clear_pending_return_val; -static int set_isr_return_val; -static int set_isr_param_return_val; -static int set_isr_nmi_return_val; -static int set_isr_nmi_param_return_val; -static int set_isr_fault_return_val; -static int get_current_return_val; - -static void fake_isr(void) -{ - return; -} - -static void fake_isr_param(uintptr_t param) -{ - return; -} - -static int global_enable(void) -{ - return FWK_SUCCESS; -} - -static int global_disable(void) -{ - return FWK_SUCCESS; -} - -static int is_enabled(unsigned int interrupt, bool *state) -{ - return is_enabled_return_val; -} - -static int enable(unsigned int interrupt) -{ - return enable_return_val; -} - -static int disable(unsigned int interrupt) -{ - return disable_return_val; -} - -static int is_pending(unsigned int interrupt, bool *state) -{ - return is_pending_return_val; -} - -static int set_pending(unsigned int interrupt) -{ - return set_pending_return_val; -} - -static int clear_pending(unsigned int interrupt) -{ - return clear_pending_return_val; -} - -static int set_isr(unsigned int interrupt, void (*isr)(void)) -{ - return set_isr_return_val; -} - -static int set_isr_param(unsigned int interrupt, - void (*isr)(uintptr_t p), - uintptr_t p) -{ - return set_isr_param_return_val; -} - -static int set_isr_nmi(void (*isr)(void)) -{ - return set_isr_nmi_return_val; -} - -static int set_isr_nmi_param(void (*isr)(uintptr_t p), uintptr_t p) -{ - return set_isr_nmi_param_return_val; -} - -static int set_isr_fault(void (*isr)(void)) -{ - return set_isr_fault_return_val; -} - -static int get_current(unsigned int *interrupt) -{ - return get_current_return_val; -} -static bool is_interrupt_context(void) -{ - return (get_current_return_val == FWK_SUCCESS); -} - -static const struct fwk_arch_interrupt_driver driver = { - .global_enable = global_enable, - .global_disable = global_disable, - .is_enabled = is_enabled, - .enable = enable, - .disable = disable, - .is_pending = is_pending, - .set_pending = set_pending, - .clear_pending = clear_pending, - .set_isr_irq = set_isr, - .set_isr_irq_param = set_isr_param, - .set_isr_nmi = set_isr_nmi, - .set_isr_nmi_param = set_isr_nmi_param, - .set_isr_fault = set_isr_fault, - .get_current = get_current, - .is_interrupt_context = is_interrupt_context, -}; - -static const struct fwk_arch_interrupt_driver driver_invalid = {}; - -static void test_case_setup(void) +void test_case_setup(void) { + init_return_val = FWK_E_HANDLER; is_enabled_return_val = FWK_E_HANDLER; enable_return_val = FWK_E_HANDLER; disable_return_val = FWK_E_HANDLER; @@ -157,58 +41,12 @@ static void test_case_setup(void) get_current_return_val = FWK_E_HANDLER; } -static void test_fwk_interrupt_before_init(void) -{ - int result; - unsigned int interrupt = 1; - bool state; - - result = fwk_interrupt_is_enabled(interrupt, &state); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_enable(interrupt); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_disable(interrupt); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_is_pending(interrupt, &state); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_set_pending(interrupt); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_clear_pending(interrupt); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_set_isr(interrupt, fake_isr); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_set_isr_param(interrupt, fake_isr_param, 0); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_set_isr_fault(fake_isr); - assert(result == FWK_E_INIT); - - result = fwk_interrupt_get_current(&interrupt); - assert(result == FWK_E_INIT); - - state = fwk_is_interrupt_context(); - assert(state == false); -} - static void test_fwk_interrupt_init(void) { int result; - result = fwk_interrupt_init(NULL); - assert(result == FWK_E_PARAM); - - /* Driver has NULL value */ - result = fwk_interrupt_init(&driver_invalid); - assert(result == FWK_E_PARAM); - - result = fwk_interrupt_init(&driver); + init_return_val = FWK_SUCCESS; + result = fwk_arch_interrupt_init(); assert(result == FWK_SUCCESS); } @@ -367,7 +205,6 @@ static void test_fwk_interrupt_nested_critical_section(void) } static const struct fwk_test_case_desc test_case_table[] = { - FWK_TEST_CASE(test_fwk_interrupt_before_init), FWK_TEST_CASE(test_fwk_interrupt_init), FWK_TEST_CASE(test_fwk_interrupt_critical_section), FWK_TEST_CASE(test_fwk_interrupt_is_enabled), -- GitLab From 535af1121e79cb49fef04a63ff0ca454c19d6825 Mon Sep 17 00:00:00 2001 From: Emma Ballantyne Date: Tue, 25 Feb 2025 15:04:15 +0000 Subject: [PATCH 3/5] arch/fwk: Add unit test support This patch adds support for the unit tests to work with driveless interrupt system, as well as updating the unit tests to properly point to the new interrupt functions. Signed-off-by: Emma Ballantyne Signed-off-by: James Chesterman --- unit_test/CMakeLists.txt | 5 + unit_test/unity_mocks/arch_helpers.h | 2 + unit_test/unity_mocks/mocks/Mockfwk_arch.c | 2389 ++++++++++++++++- unit_test/unity_mocks/mocks/Mockfwk_arch.h | 245 +- .../unity_mocks/mocks/Mockfwk_interrupt.c | 157 +- .../unity_mocks/mocks/Mockfwk_interrupt.h | 26 +- 6 files changed, 2622 insertions(+), 202 deletions(-) diff --git a/unit_test/CMakeLists.txt b/unit_test/CMakeLists.txt index d47ee1ecb..1d0a6d50d 100644 --- a/unit_test/CMakeLists.txt +++ b/unit_test/CMakeLists.txt @@ -62,6 +62,10 @@ set(CMOCK_SRC_ROOT ${CMOCK_ROOT}/src) # Framework mock sources set(FWK_MOCKS_SRC_ROOT ${TEST_ROOT}/unity_mocks/mocks) +# Architecture sources +set(ARCH_ROOT ${SCP_ROOT}/arch/none/host) +set(ARCH_SRC_ROOT ${ARCH_ROOT}/src) + set(TEST_ON_HOST TRUE) # Common flags @@ -102,6 +106,7 @@ list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_string.c) list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_delayed_resp.c) list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_time.c) list(APPEND FWK_SRC ${UNITY_SRC_ROOT}/unity.c) +list(APPEND FWK_SRC ${ARCH_SRC_ROOT}/arch_interrupt.c) list(APPEND SCP_UNITY_SRC ${TEST_ROOT}/unity_mocks/scp_unity.c) diff --git a/unit_test/unity_mocks/arch_helpers.h b/unit_test/unity_mocks/arch_helpers.h index 5514f0b68..7de65fbb2 100644 --- a/unit_test/unity_mocks/arch_helpers.h +++ b/unit_test/unity_mocks/arch_helpers.h @@ -33,4 +33,6 @@ inline static void arch_suspend(void) { } +int arch_interrupt_init(); + #endif /* ARCH_HELPERS_H */ diff --git a/unit_test/unity_mocks/mocks/Mockfwk_arch.c b/unit_test/unity_mocks/mocks/Mockfwk_arch.c index b750847f5..9d0be64aa 100644 --- a/unit_test/unity_mocks/mocks/Mockfwk_arch.c +++ b/unit_test/unity_mocks/mocks/Mockfwk_arch.c @@ -5,19 +5,203 @@ #include "cmock.h" #include "Mockfwk_arch.h" -static const char* CMockString_driver = "driver"; +static const char* CMockString_arch_interrupt_clear_pending = "arch_interrupt_clear_pending"; +static const char* CMockString_arch_interrupt_disable = "arch_interrupt_disable"; +static const char* CMockString_arch_interrupt_enable = "arch_interrupt_enable"; +static const char* CMockString_arch_interrupt_get_current = "arch_interrupt_get_current"; +static const char* CMockString_arch_interrupt_global_disable = "arch_interrupt_global_disable"; +static const char* CMockString_arch_interrupt_global_enable = "arch_interrupt_global_enable"; +static const char* CMockString_arch_interrupt_is_enabled = "arch_interrupt_is_enabled"; +static const char* CMockString_arch_interrupt_is_interrupt_context = "arch_interrupt_is_interrupt_context"; +static const char* CMockString_arch_interrupt_is_pending = "arch_interrupt_is_pending"; +static const char* CMockString_arch_interrupt_set_isr_fault = "arch_interrupt_set_isr_fault"; +static const char* CMockString_arch_interrupt_set_isr_irq = "arch_interrupt_set_isr_irq"; +static const char* CMockString_arch_interrupt_set_isr_irq_param = "arch_interrupt_set_isr_irq_param"; +static const char* CMockString_arch_interrupt_set_isr_nmi = "arch_interrupt_set_isr_nmi"; +static const char* CMockString_arch_interrupt_set_isr_nmi_param = "arch_interrupt_set_isr_nmi_param"; +static const char* CMockString_arch_interrupt_set_pending = "arch_interrupt_set_pending"; +static const char* CMockString_enabled = "enabled"; static const char* CMockString_fwk_arch_deinit = "fwk_arch_deinit"; static const char* CMockString_fwk_arch_init = "fwk_arch_init"; static const char* CMockString_fwk_arch_suspend = "fwk_arch_suspend"; +static const char* CMockString_interrupt = "interrupt"; +static const char* CMockString_isr = "isr"; +static const char* CMockString_parameter = "parameter"; +static const char* CMockString_pending = "pending"; + +typedef struct _CMOCK_arch_interrupt_global_enable_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + +} CMOCK_arch_interrupt_global_enable_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_global_disable_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + +} CMOCK_arch_interrupt_global_disable_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + bool* Expected_enabled; + int Expected_enabled_Depth; + char ReturnThruPtr_enabled_Used; + bool* ReturnThruPtr_enabled_Val; + size_t ReturnThruPtr_enabled_Size; + char IgnoreArg_interrupt; + char IgnoreArg_enabled; + +} CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_enable_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + char IgnoreArg_interrupt; + +} CMOCK_arch_interrupt_enable_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_disable_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + char IgnoreArg_interrupt; + +} CMOCK_arch_interrupt_disable_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_is_pending_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + bool* Expected_pending; + int Expected_pending_Depth; + char ReturnThruPtr_pending_Used; + bool* ReturnThruPtr_pending_Val; + size_t ReturnThruPtr_pending_Size; + char IgnoreArg_interrupt; + char IgnoreArg_pending; + +} CMOCK_arch_interrupt_is_pending_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_pending_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + char IgnoreArg_interrupt; + +} CMOCK_arch_interrupt_set_pending_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + char IgnoreArg_interrupt; + +} CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + cmock_fwk_arch_func_ptr1 Expected_isr; + char IgnoreArg_interrupt; + char IgnoreArg_isr; + +} CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int Expected_interrupt; + cmock_fwk_arch_func_ptr2 Expected_isr; + uintptr_t Expected_parameter; + char IgnoreArg_interrupt; + char IgnoreArg_isr; + char IgnoreArg_parameter; + +} CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + cmock_fwk_arch_func_ptr3 Expected_isr; + char IgnoreArg_isr; + +} CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + cmock_fwk_arch_func_ptr4 Expected_isr; + uintptr_t Expected_parameter; + char IgnoreArg_isr; + char IgnoreArg_parameter; + +} CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + cmock_fwk_arch_func_ptr5 Expected_isr; + char IgnoreArg_isr; + +} CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_get_current_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + int ReturnVal; + unsigned int* Expected_interrupt; + int Expected_interrupt_Depth; + char ReturnThruPtr_interrupt_Used; + unsigned int* ReturnThruPtr_interrupt_Val; + size_t ReturnThruPtr_interrupt_Size; + char IgnoreArg_interrupt; + +} CMOCK_arch_interrupt_get_current_CALL_INSTANCE; + +typedef struct _CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE +{ + UNITY_LINE_TYPE LineNumber; + char ExpectAnyArgsBool; + bool ReturnVal; + +} CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE; typedef struct _CMOCK_fwk_arch_init_CALL_INSTANCE { UNITY_LINE_TYPE LineNumber; char ExpectAnyArgsBool; int ReturnVal; - const struct fwk_arch_init_driver* Expected_driver; - int Expected_driver_Depth; - char IgnoreArg_driver; } CMOCK_fwk_arch_init_CALL_INSTANCE; @@ -38,6 +222,96 @@ typedef struct _CMOCK_fwk_arch_suspend_CALL_INSTANCE static struct Mockfwk_archInstance { + char arch_interrupt_global_enable_IgnoreBool; + int arch_interrupt_global_enable_FinalReturn; + char arch_interrupt_global_enable_CallbackBool; + CMOCK_arch_interrupt_global_enable_CALLBACK arch_interrupt_global_enable_CallbackFunctionPointer; + int arch_interrupt_global_enable_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_global_enable_CallInstance; + char arch_interrupt_global_disable_IgnoreBool; + int arch_interrupt_global_disable_FinalReturn; + char arch_interrupt_global_disable_CallbackBool; + CMOCK_arch_interrupt_global_disable_CALLBACK arch_interrupt_global_disable_CallbackFunctionPointer; + int arch_interrupt_global_disable_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_global_disable_CallInstance; + char arch_interrupt_is_enabled_IgnoreBool; + int arch_interrupt_is_enabled_FinalReturn; + char arch_interrupt_is_enabled_CallbackBool; + CMOCK_arch_interrupt_is_enabled_CALLBACK arch_interrupt_is_enabled_CallbackFunctionPointer; + int arch_interrupt_is_enabled_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_is_enabled_CallInstance; + char arch_interrupt_enable_IgnoreBool; + int arch_interrupt_enable_FinalReturn; + char arch_interrupt_enable_CallbackBool; + CMOCK_arch_interrupt_enable_CALLBACK arch_interrupt_enable_CallbackFunctionPointer; + int arch_interrupt_enable_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_enable_CallInstance; + char arch_interrupt_disable_IgnoreBool; + int arch_interrupt_disable_FinalReturn; + char arch_interrupt_disable_CallbackBool; + CMOCK_arch_interrupt_disable_CALLBACK arch_interrupt_disable_CallbackFunctionPointer; + int arch_interrupt_disable_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_disable_CallInstance; + char arch_interrupt_is_pending_IgnoreBool; + int arch_interrupt_is_pending_FinalReturn; + char arch_interrupt_is_pending_CallbackBool; + CMOCK_arch_interrupt_is_pending_CALLBACK arch_interrupt_is_pending_CallbackFunctionPointer; + int arch_interrupt_is_pending_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_is_pending_CallInstance; + char arch_interrupt_set_pending_IgnoreBool; + int arch_interrupt_set_pending_FinalReturn; + char arch_interrupt_set_pending_CallbackBool; + CMOCK_arch_interrupt_set_pending_CALLBACK arch_interrupt_set_pending_CallbackFunctionPointer; + int arch_interrupt_set_pending_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_pending_CallInstance; + char arch_interrupt_clear_pending_IgnoreBool; + int arch_interrupt_clear_pending_FinalReturn; + char arch_interrupt_clear_pending_CallbackBool; + CMOCK_arch_interrupt_clear_pending_CALLBACK arch_interrupt_clear_pending_CallbackFunctionPointer; + int arch_interrupt_clear_pending_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_clear_pending_CallInstance; + char arch_interrupt_set_isr_irq_IgnoreBool; + int arch_interrupt_set_isr_irq_FinalReturn; + char arch_interrupt_set_isr_irq_CallbackBool; + CMOCK_arch_interrupt_set_isr_irq_CALLBACK arch_interrupt_set_isr_irq_CallbackFunctionPointer; + int arch_interrupt_set_isr_irq_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_isr_irq_CallInstance; + char arch_interrupt_set_isr_irq_param_IgnoreBool; + int arch_interrupt_set_isr_irq_param_FinalReturn; + char arch_interrupt_set_isr_irq_param_CallbackBool; + CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK arch_interrupt_set_isr_irq_param_CallbackFunctionPointer; + int arch_interrupt_set_isr_irq_param_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_isr_irq_param_CallInstance; + char arch_interrupt_set_isr_nmi_IgnoreBool; + int arch_interrupt_set_isr_nmi_FinalReturn; + char arch_interrupt_set_isr_nmi_CallbackBool; + CMOCK_arch_interrupt_set_isr_nmi_CALLBACK arch_interrupt_set_isr_nmi_CallbackFunctionPointer; + int arch_interrupt_set_isr_nmi_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_isr_nmi_CallInstance; + char arch_interrupt_set_isr_nmi_param_IgnoreBool; + int arch_interrupt_set_isr_nmi_param_FinalReturn; + char arch_interrupt_set_isr_nmi_param_CallbackBool; + CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer; + int arch_interrupt_set_isr_nmi_param_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_isr_nmi_param_CallInstance; + char arch_interrupt_set_isr_fault_IgnoreBool; + int arch_interrupt_set_isr_fault_FinalReturn; + char arch_interrupt_set_isr_fault_CallbackBool; + CMOCK_arch_interrupt_set_isr_fault_CALLBACK arch_interrupt_set_isr_fault_CallbackFunctionPointer; + int arch_interrupt_set_isr_fault_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_set_isr_fault_CallInstance; + char arch_interrupt_get_current_IgnoreBool; + int arch_interrupt_get_current_FinalReturn; + char arch_interrupt_get_current_CallbackBool; + CMOCK_arch_interrupt_get_current_CALLBACK arch_interrupt_get_current_CallbackFunctionPointer; + int arch_interrupt_get_current_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_get_current_CallInstance; + char arch_interrupt_is_interrupt_context_IgnoreBool; + bool arch_interrupt_is_interrupt_context_FinalReturn; + char arch_interrupt_is_interrupt_context_CallbackBool; + CMOCK_arch_interrupt_is_interrupt_context_CALLBACK arch_interrupt_is_interrupt_context_CallbackFunctionPointer; + int arch_interrupt_is_interrupt_context_CallbackCalls; + CMOCK_MEM_INDEX_TYPE arch_interrupt_is_interrupt_context_CallInstance; char fwk_arch_init_IgnoreBool; int fwk_arch_init_FinalReturn; char fwk_arch_init_CallbackBool; @@ -63,6 +337,201 @@ void Mockfwk_arch_Verify(void) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; CMOCK_MEM_INDEX_TYPE call_instance; + call_instance = Mock.arch_interrupt_global_enable_CallInstance; + if (Mock.arch_interrupt_global_enable_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_global_enable); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_global_enable_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_global_disable_CallInstance; + if (Mock.arch_interrupt_global_disable_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_global_disable); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_global_disable_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_is_enabled_CallInstance; + if (Mock.arch_interrupt_is_enabled_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_enabled); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_is_enabled_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_enable_CallInstance; + if (Mock.arch_interrupt_enable_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_enable); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_enable_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_disable_CallInstance; + if (Mock.arch_interrupt_disable_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_disable); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_disable_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_is_pending_CallInstance; + if (Mock.arch_interrupt_is_pending_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_pending); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_is_pending_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_pending_CallInstance; + if (Mock.arch_interrupt_set_pending_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_pending); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_pending_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_clear_pending_CallInstance; + if (Mock.arch_interrupt_clear_pending_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_clear_pending); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_clear_pending_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_isr_irq_CallInstance; + if (Mock.arch_interrupt_set_isr_irq_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_irq); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_isr_irq_param_CallInstance; + if (Mock.arch_interrupt_set_isr_irq_param_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_irq_param); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_isr_nmi_CallInstance; + if (Mock.arch_interrupt_set_isr_nmi_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_nmi); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_isr_nmi_param_CallInstance; + if (Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_nmi_param); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_set_isr_fault_CallInstance; + if (Mock.arch_interrupt_set_isr_fault_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_fault); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_get_current_CallInstance; + if (Mock.arch_interrupt_get_current_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_get_current); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_get_current_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } + call_instance = Mock.arch_interrupt_is_interrupt_context_CallInstance; + if (Mock.arch_interrupt_is_interrupt_context_IgnoreBool) + call_instance = CMOCK_GUTS_NONE; + if (CMOCK_GUTS_NONE != call_instance) + { + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_interrupt_context); + UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); + } + if (Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer != NULL) + { + call_instance = CMOCK_GUTS_NONE; + (void)call_instance; + } call_instance = Mock.fwk_arch_init_CallInstance; if (Mock.fwk_arch_init_IgnoreBool) call_instance = CMOCK_GUTS_NONE; @@ -115,121 +584,1897 @@ void Mockfwk_arch_Destroy(void) memset(&Mock, 0, sizeof(Mock)); } -int fwk_arch_init(const struct fwk_arch_init_driver* driver) +int arch_interrupt_global_enable(void) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; - CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance; - UNITY_SET_DETAIL(CMockString_fwk_arch_init); - cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.fwk_arch_init_CallInstance); - Mock.fwk_arch_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_init_CallInstance); - if (Mock.fwk_arch_init_IgnoreBool) + CMOCK_arch_interrupt_global_enable_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_global_enable); + cmock_call_instance = (CMOCK_arch_interrupt_global_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_global_enable_CallInstance); + Mock.arch_interrupt_global_enable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_global_enable_CallInstance); + if (Mock.arch_interrupt_global_enable_IgnoreBool) { UNITY_CLR_DETAILS(); if (cmock_call_instance == NULL) - return Mock.fwk_arch_init_FinalReturn; - Mock.fwk_arch_init_FinalReturn = cmock_call_instance->ReturnVal; + return Mock.arch_interrupt_global_enable_FinalReturn; + Mock.arch_interrupt_global_enable_FinalReturn = cmock_call_instance->ReturnVal; return cmock_call_instance->ReturnVal; } - if (!Mock.fwk_arch_init_CallbackBool && - Mock.fwk_arch_init_CallbackFunctionPointer != NULL) + if (!Mock.arch_interrupt_global_enable_CallbackBool && + Mock.arch_interrupt_global_enable_CallbackFunctionPointer != NULL) { - int cmock_cb_ret = Mock.fwk_arch_init_CallbackFunctionPointer(driver, Mock.fwk_arch_init_CallbackCalls++); + int cmock_cb_ret = Mock.arch_interrupt_global_enable_CallbackFunctionPointer(Mock.arch_interrupt_global_enable_CallbackCalls++); UNITY_CLR_DETAILS(); return cmock_cb_ret; } UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); cmock_line = cmock_call_instance->LineNumber; - if (!cmock_call_instance->ExpectAnyArgsBool) - { - if (!cmock_call_instance->IgnoreArg_driver) - { - UNITY_SET_DETAILS(CMockString_fwk_arch_init,CMockString_driver); - if (cmock_call_instance->Expected_driver == NULL) - { UNITY_TEST_ASSERT_NULL(driver, cmock_line, CMockStringExpNULL); } - else - { UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((void*)(cmock_call_instance->Expected_driver), (void*)(driver), sizeof(const struct fwk_arch_init_driver), cmock_call_instance->Expected_driver_Depth, cmock_line, CMockStringMismatch); } - } - } - if (Mock.fwk_arch_init_CallbackFunctionPointer != NULL) + if (Mock.arch_interrupt_global_enable_CallbackFunctionPointer != NULL) { - cmock_call_instance->ReturnVal = Mock.fwk_arch_init_CallbackFunctionPointer(driver, Mock.fwk_arch_init_CallbackCalls++); + cmock_call_instance->ReturnVal = Mock.arch_interrupt_global_enable_CallbackFunctionPointer(Mock.arch_interrupt_global_enable_CallbackCalls++); } UNITY_CLR_DETAILS(); return cmock_call_instance->ReturnVal; } -void CMockExpectParameters_fwk_arch_init(CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance, const struct fwk_arch_init_driver* driver, int driver_Depth); -void CMockExpectParameters_fwk_arch_init(CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance, const struct fwk_arch_init_driver* driver, int driver_Depth) +void arch_interrupt_global_enable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { - cmock_call_instance->Expected_driver = driver; - cmock_call_instance->Expected_driver_Depth = driver_Depth; - cmock_call_instance->IgnoreArg_driver = 0; -} - -void fwk_arch_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) -{ - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_init_CALL_INSTANCE)); - CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_global_enable_CALL_INSTANCE)); + CMOCK_arch_interrupt_global_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_global_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_arch_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_init_CallInstance, cmock_guts_index); - Mock.fwk_arch_init_IgnoreBool = (char)0; + Mock.arch_interrupt_global_enable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_global_enable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_global_enable_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; cmock_call_instance->ReturnVal = cmock_to_return; - Mock.fwk_arch_init_IgnoreBool = (char)1; + Mock.arch_interrupt_global_enable_IgnoreBool = (char)1; } -void fwk_arch_init_CMockStopIgnore(void) +void arch_interrupt_global_enable_CMockStopIgnore(void) { - if(Mock.fwk_arch_init_IgnoreBool) - Mock.fwk_arch_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_init_CallInstance); - Mock.fwk_arch_init_IgnoreBool = (char)0; + if(Mock.arch_interrupt_global_enable_IgnoreBool) + Mock.arch_interrupt_global_enable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_global_enable_CallInstance); + Mock.arch_interrupt_global_enable_IgnoreBool = (char)0; } -void fwk_arch_init_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +void arch_interrupt_global_enable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_init_CALL_INSTANCE)); - CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_global_enable_CALL_INSTANCE)); + CMOCK_arch_interrupt_global_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_global_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_arch_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_init_CallInstance, cmock_guts_index); - Mock.fwk_arch_init_IgnoreBool = (char)0; + Mock.arch_interrupt_global_enable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_global_enable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_global_enable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_global_enable_AddCallback(CMOCK_arch_interrupt_global_enable_CALLBACK Callback) +{ + Mock.arch_interrupt_global_enable_IgnoreBool = (char)0; + Mock.arch_interrupt_global_enable_CallbackBool = (char)1; + Mock.arch_interrupt_global_enable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_global_enable_Stub(CMOCK_arch_interrupt_global_enable_CALLBACK Callback) +{ + Mock.arch_interrupt_global_enable_IgnoreBool = (char)0; + Mock.arch_interrupt_global_enable_CallbackBool = (char)0; + Mock.arch_interrupt_global_enable_CallbackFunctionPointer = Callback; +} + +int arch_interrupt_global_disable(void) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_global_disable_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_global_disable); + cmock_call_instance = (CMOCK_arch_interrupt_global_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_global_disable_CallInstance); + Mock.arch_interrupt_global_disable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_global_disable_CallInstance); + if (Mock.arch_interrupt_global_disable_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_global_disable_FinalReturn; + Mock.arch_interrupt_global_disable_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_global_disable_CallbackBool && + Mock.arch_interrupt_global_disable_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_global_disable_CallbackFunctionPointer(Mock.arch_interrupt_global_disable_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (Mock.arch_interrupt_global_disable_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_global_disable_CallbackFunctionPointer(Mock.arch_interrupt_global_disable_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void arch_interrupt_global_disable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_global_disable_CALL_INSTANCE)); + CMOCK_arch_interrupt_global_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_global_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_global_disable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_global_disable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_global_disable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_global_disable_IgnoreBool = (char)1; +} + +void arch_interrupt_global_disable_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_global_disable_IgnoreBool) + Mock.arch_interrupt_global_disable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_global_disable_CallInstance); + Mock.arch_interrupt_global_disable_IgnoreBool = (char)0; +} + +void arch_interrupt_global_disable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_global_disable_CALL_INSTANCE)); + CMOCK_arch_interrupt_global_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_global_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_global_disable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_global_disable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_global_disable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_global_disable_AddCallback(CMOCK_arch_interrupt_global_disable_CALLBACK Callback) +{ + Mock.arch_interrupt_global_disable_IgnoreBool = (char)0; + Mock.arch_interrupt_global_disable_CallbackBool = (char)1; + Mock.arch_interrupt_global_disable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_global_disable_Stub(CMOCK_arch_interrupt_global_disable_CALLBACK Callback) +{ + Mock.arch_interrupt_global_disable_IgnoreBool = (char)0; + Mock.arch_interrupt_global_disable_CallbackBool = (char)0; + Mock.arch_interrupt_global_disable_CallbackFunctionPointer = Callback; +} + +int arch_interrupt_is_enabled(unsigned int interrupt, bool* enabled) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_enabled); + cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_is_enabled_CallInstance); + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_enabled_CallInstance); + if (Mock.arch_interrupt_is_enabled_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_is_enabled_FinalReturn; + Mock.arch_interrupt_is_enabled_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_is_enabled_CallbackBool && + Mock.arch_interrupt_is_enabled_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_is_enabled_CallbackFunctionPointer(interrupt, enabled, Mock.arch_interrupt_is_enabled_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_is_enabled,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_enabled) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_is_enabled,CMockString_enabled); + if (cmock_call_instance->Expected_enabled == NULL) + { UNITY_TEST_ASSERT_NULL(enabled, cmock_line, CMockStringExpNULL); } + else + { UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(cmock_call_instance->Expected_enabled, enabled, cmock_call_instance->Expected_enabled_Depth, cmock_line, CMockStringMismatch); } + } + } + if (Mock.arch_interrupt_is_enabled_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_is_enabled_CallbackFunctionPointer(interrupt, enabled, Mock.arch_interrupt_is_enabled_CallbackCalls++); + } + if (cmock_call_instance->ReturnThruPtr_enabled_Used) + { + UNITY_TEST_ASSERT_NOT_NULL(enabled, cmock_line, CMockStringPtrIsNULL); + memcpy((void*)enabled, (void*)cmock_call_instance->ReturnThruPtr_enabled_Val, + cmock_call_instance->ReturnThruPtr_enabled_Size); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_is_enabled(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, bool* enabled, int enabled_Depth); +void CMockExpectParameters_arch_interrupt_is_enabled(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, bool* enabled, int enabled_Depth) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; + cmock_call_instance->Expected_enabled = enabled; + cmock_call_instance->Expected_enabled_Depth = enabled_Depth; + cmock_call_instance->IgnoreArg_enabled = 0; + cmock_call_instance->ReturnThruPtr_enabled_Used = 0; +} + +void arch_interrupt_is_enabled_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_enabled_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)1; +} + +void arch_interrupt_is_enabled_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_is_enabled_IgnoreBool) + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_enabled_CallInstance); + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; +} + +void arch_interrupt_is_enabled_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_enabled_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_is_enabled_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* enabled, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_enabled_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_is_enabled(cmock_call_instance, interrupt, enabled, 1); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_is_enabled_AddCallback(CMOCK_arch_interrupt_is_enabled_CALLBACK Callback) +{ + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + Mock.arch_interrupt_is_enabled_CallbackBool = (char)1; + Mock.arch_interrupt_is_enabled_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_is_enabled_Stub(CMOCK_arch_interrupt_is_enabled_CALLBACK Callback) +{ + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + Mock.arch_interrupt_is_enabled_CallbackBool = (char)0; + Mock.arch_interrupt_is_enabled_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_is_enabled_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* enabled, int enabled_Depth, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_enabled_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_enabled_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_enabled_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_is_enabled(cmock_call_instance, interrupt, enabled, enabled_Depth); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_is_enabled_CMockReturnMemThruPtr_enabled(UNITY_LINE_TYPE cmock_line, bool* enabled, size_t cmock_size) +{ + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_enabled_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringPtrPreExp); + cmock_call_instance->ReturnThruPtr_enabled_Used = 1; + cmock_call_instance->ReturnThruPtr_enabled_Val = enabled; + cmock_call_instance->ReturnThruPtr_enabled_Size = cmock_size; +} + +void arch_interrupt_is_enabled_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_enabled_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +void arch_interrupt_is_enabled_CMockIgnoreArg_enabled(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_enabled_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_enabled_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_enabled = 1; +} + +int arch_interrupt_enable(unsigned int interrupt) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_enable); + cmock_call_instance = (CMOCK_arch_interrupt_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_enable_CallInstance); + Mock.arch_interrupt_enable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_enable_CallInstance); + if (Mock.arch_interrupt_enable_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_enable_FinalReturn; + Mock.arch_interrupt_enable_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_enable_CallbackBool && + Mock.arch_interrupt_enable_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_enable_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_enable_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_enable,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_enable_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_enable_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_enable_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_enable(CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt); +void CMockExpectParameters_arch_interrupt_enable(CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; +} + +void arch_interrupt_enable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_enable_CALL_INSTANCE)); + CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_enable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_enable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_enable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_enable_IgnoreBool = (char)1; +} + +void arch_interrupt_enable_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_enable_IgnoreBool) + Mock.arch_interrupt_enable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_enable_CallInstance); + Mock.arch_interrupt_enable_IgnoreBool = (char)0; +} + +void arch_interrupt_enable_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_enable_CALL_INSTANCE)); + CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_enable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_enable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_enable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_enable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_enable_CALL_INSTANCE)); + CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_enable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_enable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_enable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_enable(cmock_call_instance, interrupt); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_enable_AddCallback(CMOCK_arch_interrupt_enable_CALLBACK Callback) +{ + Mock.arch_interrupt_enable_IgnoreBool = (char)0; + Mock.arch_interrupt_enable_CallbackBool = (char)1; + Mock.arch_interrupt_enable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_enable_Stub(CMOCK_arch_interrupt_enable_CALLBACK Callback) +{ + Mock.arch_interrupt_enable_IgnoreBool = (char)0; + Mock.arch_interrupt_enable_CallbackBool = (char)0; + Mock.arch_interrupt_enable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_enable_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_enable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_enable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_enable_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +int arch_interrupt_disable(unsigned int interrupt) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_disable); + cmock_call_instance = (CMOCK_arch_interrupt_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_disable_CallInstance); + Mock.arch_interrupt_disable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_disable_CallInstance); + if (Mock.arch_interrupt_disable_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_disable_FinalReturn; + Mock.arch_interrupt_disable_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_disable_CallbackBool && + Mock.arch_interrupt_disable_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_disable_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_disable_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_disable,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_disable_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_disable_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_disable_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_disable(CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt); +void CMockExpectParameters_arch_interrupt_disable(CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; +} + +void arch_interrupt_disable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_disable_CALL_INSTANCE)); + CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_disable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_disable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_disable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_disable_IgnoreBool = (char)1; +} + +void arch_interrupt_disable_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_disable_IgnoreBool) + Mock.arch_interrupt_disable_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_disable_CallInstance); + Mock.arch_interrupt_disable_IgnoreBool = (char)0; +} + +void arch_interrupt_disable_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_disable_CALL_INSTANCE)); + CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_disable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_disable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_disable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_disable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_disable_CALL_INSTANCE)); + CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_disable_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_disable_CallInstance, cmock_guts_index); + Mock.arch_interrupt_disable_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_disable(cmock_call_instance, interrupt); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_disable_AddCallback(CMOCK_arch_interrupt_disable_CALLBACK Callback) +{ + Mock.arch_interrupt_disable_IgnoreBool = (char)0; + Mock.arch_interrupt_disable_CallbackBool = (char)1; + Mock.arch_interrupt_disable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_disable_Stub(CMOCK_arch_interrupt_disable_CALLBACK Callback) +{ + Mock.arch_interrupt_disable_IgnoreBool = (char)0; + Mock.arch_interrupt_disable_CallbackBool = (char)0; + Mock.arch_interrupt_disable_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_disable_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_disable_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_disable_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_disable_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +int arch_interrupt_is_pending(unsigned int interrupt, bool* pending) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_pending); + cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_is_pending_CallInstance); + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_pending_CallInstance); + if (Mock.arch_interrupt_is_pending_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_is_pending_FinalReturn; + Mock.arch_interrupt_is_pending_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_is_pending_CallbackBool && + Mock.arch_interrupt_is_pending_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_is_pending_CallbackFunctionPointer(interrupt, pending, Mock.arch_interrupt_is_pending_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_is_pending,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_pending) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_is_pending,CMockString_pending); + if (cmock_call_instance->Expected_pending == NULL) + { UNITY_TEST_ASSERT_NULL(pending, cmock_line, CMockStringExpNULL); } + else + { UNITY_TEST_ASSERT_EQUAL_INT_ARRAY(cmock_call_instance->Expected_pending, pending, cmock_call_instance->Expected_pending_Depth, cmock_line, CMockStringMismatch); } + } + } + if (Mock.arch_interrupt_is_pending_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_is_pending_CallbackFunctionPointer(interrupt, pending, Mock.arch_interrupt_is_pending_CallbackCalls++); + } + if (cmock_call_instance->ReturnThruPtr_pending_Used) + { + UNITY_TEST_ASSERT_NOT_NULL(pending, cmock_line, CMockStringPtrIsNULL); + memcpy((void*)pending, (void*)cmock_call_instance->ReturnThruPtr_pending_Val, + cmock_call_instance->ReturnThruPtr_pending_Size); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_is_pending(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, bool* pending, int pending_Depth); +void CMockExpectParameters_arch_interrupt_is_pending(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, bool* pending, int pending_Depth) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; + cmock_call_instance->Expected_pending = pending; + cmock_call_instance->Expected_pending_Depth = pending_Depth; + cmock_call_instance->IgnoreArg_pending = 0; + cmock_call_instance->ReturnThruPtr_pending_Used = 0; +} + +void arch_interrupt_is_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_is_pending_IgnoreBool = (char)1; +} + +void arch_interrupt_is_pending_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_is_pending_IgnoreBool) + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_pending_CallInstance); + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; +} + +void arch_interrupt_is_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_is_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* pending, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_is_pending(cmock_call_instance, interrupt, pending, 1); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_is_pending_AddCallback(CMOCK_arch_interrupt_is_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_is_pending_CallbackBool = (char)1; + Mock.arch_interrupt_is_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_is_pending_Stub(CMOCK_arch_interrupt_is_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_is_pending_CallbackBool = (char)0; + Mock.arch_interrupt_is_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_is_pending_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* pending, int pending_Depth, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_is_pending(cmock_call_instance, interrupt, pending, pending_Depth); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_is_pending_CMockReturnMemThruPtr_pending(UNITY_LINE_TYPE cmock_line, bool* pending, size_t cmock_size) +{ + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_pending_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringPtrPreExp); + cmock_call_instance->ReturnThruPtr_pending_Used = 1; + cmock_call_instance->ReturnThruPtr_pending_Val = pending; + cmock_call_instance->ReturnThruPtr_pending_Size = cmock_size; +} + +void arch_interrupt_is_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_pending_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +void arch_interrupt_is_pending_CMockIgnoreArg_pending(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_is_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_is_pending_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_pending = 1; +} + +int arch_interrupt_set_pending(unsigned int interrupt) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_pending); + cmock_call_instance = (CMOCK_arch_interrupt_set_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_pending_CallInstance); + Mock.arch_interrupt_set_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_pending_CallInstance); + if (Mock.arch_interrupt_set_pending_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_pending_FinalReturn; + Mock.arch_interrupt_set_pending_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_pending_CallbackBool && + Mock.arch_interrupt_set_pending_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_pending_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_set_pending_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_pending,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_pending_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_pending_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_set_pending_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_pending(CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt); +void CMockExpectParameters_arch_interrupt_set_pending(CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; +} + +void arch_interrupt_set_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_pending_IgnoreBool = (char)1; +} + +void arch_interrupt_set_pending_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_pending_IgnoreBool) + Mock.arch_interrupt_set_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_pending_CallInstance); + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; +} + +void arch_interrupt_set_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_set_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_set_pending(cmock_call_instance, interrupt); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_set_pending_AddCallback(CMOCK_arch_interrupt_set_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_set_pending_CallbackBool = (char)1; + Mock.arch_interrupt_set_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_pending_Stub(CMOCK_arch_interrupt_set_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_set_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_set_pending_CallbackBool = (char)0; + Mock.arch_interrupt_set_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_pending_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +int arch_interrupt_clear_pending(unsigned int interrupt) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_clear_pending); + cmock_call_instance = (CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_clear_pending_CallInstance); + Mock.arch_interrupt_clear_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_clear_pending_CallInstance); + if (Mock.arch_interrupt_clear_pending_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_clear_pending_FinalReturn; + Mock.arch_interrupt_clear_pending_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_clear_pending_CallbackBool && + Mock.arch_interrupt_clear_pending_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_clear_pending_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_clear_pending_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_clear_pending,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_clear_pending_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_clear_pending_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_clear_pending_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_clear_pending(CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt); +void CMockExpectParameters_arch_interrupt_clear_pending(CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; +} + +void arch_interrupt_clear_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_clear_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_clear_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)1; +} + +void arch_interrupt_clear_pending_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_clear_pending_IgnoreBool) + Mock.arch_interrupt_clear_pending_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_clear_pending_CallInstance); + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; +} + +void arch_interrupt_clear_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_clear_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_clear_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_clear_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE)); + CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_clear_pending_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_clear_pending_CallInstance, cmock_guts_index); + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_clear_pending(cmock_call_instance, interrupt); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_clear_pending_AddCallback(CMOCK_arch_interrupt_clear_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_clear_pending_CallbackBool = (char)1; + Mock.arch_interrupt_clear_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_clear_pending_Stub(CMOCK_arch_interrupt_clear_pending_CALLBACK Callback) +{ + Mock.arch_interrupt_clear_pending_IgnoreBool = (char)0; + Mock.arch_interrupt_clear_pending_CallbackBool = (char)0; + Mock.arch_interrupt_clear_pending_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_clear_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_clear_pending_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_clear_pending_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +int arch_interrupt_set_isr_irq(unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_irq); + cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_isr_irq_CallInstance); + Mock.arch_interrupt_set_isr_irq_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_irq_CallInstance); + if (Mock.arch_interrupt_set_isr_irq_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_isr_irq_FinalReturn; + Mock.arch_interrupt_set_isr_irq_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_isr_irq_CallbackBool && + Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer(interrupt, isr, Mock.arch_interrupt_set_isr_irq_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_irq,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_isr) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_irq,CMockString_isr); + UNITY_TEST_ASSERT_EQUAL_PTR(cmock_call_instance->Expected_isr, isr, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer(interrupt, isr, Mock.arch_interrupt_set_isr_irq_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_isr_irq(CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr); +void CMockExpectParameters_arch_interrupt_set_isr_irq(CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; + memcpy((void*)(&cmock_call_instance->Expected_isr), (void*)(&isr), + sizeof(cmock_fwk_arch_func_ptr1[sizeof(isr) == sizeof(cmock_fwk_arch_func_ptr1) ? 1 : -1])); /* add cmock_fwk_arch_func_ptr1 to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_isr = 0; +} + +void arch_interrupt_set_isr_irq_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)1; +} + +void arch_interrupt_set_isr_irq_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_isr_irq_IgnoreBool) + Mock.arch_interrupt_set_isr_irq_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_irq_CallInstance); + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; +} + +void arch_interrupt_set_isr_irq_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_set_isr_irq_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_set_isr_irq(cmock_call_instance, interrupt, isr); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_set_isr_irq_AddCallback(CMOCK_arch_interrupt_set_isr_irq_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_irq_CallbackBool = (char)1; + Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_irq_Stub(CMOCK_arch_interrupt_set_isr_irq_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_irq_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_irq_CallbackBool = (char)0; + Mock.arch_interrupt_set_isr_irq_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_irq_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_irq_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +void arch_interrupt_set_isr_irq_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_irq_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_isr = 1; +} + +int arch_interrupt_set_isr_irq_param(unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_irq_param); + cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_isr_irq_param_CallInstance); + Mock.arch_interrupt_set_isr_irq_param_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_irq_param_CallInstance); + if (Mock.arch_interrupt_set_isr_irq_param_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_isr_irq_param_FinalReturn; + Mock.arch_interrupt_set_isr_irq_param_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_isr_irq_param_CallbackBool && + Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer(interrupt, isr, parameter, Mock.arch_interrupt_set_isr_irq_param_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_irq_param,CMockString_interrupt); + UNITY_TEST_ASSERT_EQUAL_HEX32(cmock_call_instance->Expected_interrupt, interrupt, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_isr) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_irq_param,CMockString_isr); + UNITY_TEST_ASSERT_EQUAL_PTR(cmock_call_instance->Expected_isr, isr, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_parameter) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_irq_param,CMockString_parameter); + UNITY_TEST_ASSERT_EQUAL_MEMORY((void*)(&cmock_call_instance->Expected_parameter), (void*)(¶meter), sizeof(uintptr_t), cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer(interrupt, isr, parameter, Mock.arch_interrupt_set_isr_irq_param_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_isr_irq_param(CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter); +void CMockExpectParameters_arch_interrupt_set_isr_irq_param(CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance, unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->IgnoreArg_interrupt = 0; + memcpy((void*)(&cmock_call_instance->Expected_isr), (void*)(&isr), + sizeof(cmock_fwk_arch_func_ptr2[sizeof(isr) == sizeof(cmock_fwk_arch_func_ptr2) ? 1 : -1])); /* add cmock_fwk_arch_func_ptr2 to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_isr = 0; + memcpy((void*)(&cmock_call_instance->Expected_parameter), (void*)(¶meter), + sizeof(uintptr_t[sizeof(parameter) == sizeof(uintptr_t) ? 1 : -1])); /* add uintptr_t to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_parameter = 0; +} + +void arch_interrupt_set_isr_irq_param_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)1; +} + +void arch_interrupt_set_isr_irq_param_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_isr_irq_param_IgnoreBool) + Mock.arch_interrupt_set_isr_irq_param_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_irq_param_CallInstance); + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; +} + +void arch_interrupt_set_isr_irq_param_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_set_isr_irq_param_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_irq_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_set_isr_irq_param(cmock_call_instance, interrupt, isr, parameter); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_set_isr_irq_param_AddCallback(CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_irq_param_CallbackBool = (char)1; + Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_irq_param_Stub(CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_irq_param_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_irq_param_CallbackBool = (char)0; + Mock.arch_interrupt_set_isr_irq_param_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_isr = 1; +} + +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_parameter(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_irq_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_irq_param_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_parameter = 1; +} + +int arch_interrupt_set_isr_nmi(cmock_fwk_arch_func_ptr3 isr) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_nmi); + cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_isr_nmi_CallInstance); + Mock.arch_interrupt_set_isr_nmi_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_nmi_CallInstance); + if (Mock.arch_interrupt_set_isr_nmi_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_isr_nmi_FinalReturn; + Mock.arch_interrupt_set_isr_nmi_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_isr_nmi_CallbackBool && + Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer(isr, Mock.arch_interrupt_set_isr_nmi_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_isr) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_nmi,CMockString_isr); + UNITY_TEST_ASSERT_EQUAL_PTR(cmock_call_instance->Expected_isr, isr, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer(isr, Mock.arch_interrupt_set_isr_nmi_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_isr_nmi(CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr3 isr); +void CMockExpectParameters_arch_interrupt_set_isr_nmi(CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr3 isr) +{ + memcpy((void*)(&cmock_call_instance->Expected_isr), (void*)(&isr), + sizeof(cmock_fwk_arch_func_ptr3[sizeof(isr) == sizeof(cmock_fwk_arch_func_ptr3) ? 1 : -1])); /* add cmock_fwk_arch_func_ptr3 to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_isr = 0; +} + +void arch_interrupt_set_isr_nmi_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)1; +} + +void arch_interrupt_set_isr_nmi_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_isr_nmi_IgnoreBool) + Mock.arch_interrupt_set_isr_nmi_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_nmi_CallInstance); + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; +} + +void arch_interrupt_set_isr_nmi_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_set_isr_nmi_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr3 isr, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_set_isr_nmi(cmock_call_instance, isr); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_set_isr_nmi_AddCallback(CMOCK_arch_interrupt_set_isr_nmi_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_CallbackBool = (char)1; + Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_nmi_Stub(CMOCK_arch_interrupt_set_isr_nmi_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_nmi_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_CallbackBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_nmi_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_nmi_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_isr = 1; +} + +int arch_interrupt_set_isr_nmi_param(cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_nmi_param); + cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_isr_nmi_param_CallInstance); + Mock.arch_interrupt_set_isr_nmi_param_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_nmi_param_CallInstance); + if (Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_isr_nmi_param_FinalReturn; + Mock.arch_interrupt_set_isr_nmi_param_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_isr_nmi_param_CallbackBool && + Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer(isr, parameter, Mock.arch_interrupt_set_isr_nmi_param_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_isr) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_nmi_param,CMockString_isr); + UNITY_TEST_ASSERT_EQUAL_PTR(cmock_call_instance->Expected_isr, isr, cmock_line, CMockStringMismatch); + } + if (!cmock_call_instance->IgnoreArg_parameter) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_nmi_param,CMockString_parameter); + UNITY_TEST_ASSERT_EQUAL_MEMORY((void*)(&cmock_call_instance->Expected_parameter), (void*)(¶meter), sizeof(uintptr_t), cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer(isr, parameter, Mock.arch_interrupt_set_isr_nmi_param_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_isr_nmi_param(CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter); +void CMockExpectParameters_arch_interrupt_set_isr_nmi_param(CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter) +{ + memcpy((void*)(&cmock_call_instance->Expected_isr), (void*)(&isr), + sizeof(cmock_fwk_arch_func_ptr4[sizeof(isr) == sizeof(cmock_fwk_arch_func_ptr4) ? 1 : -1])); /* add cmock_fwk_arch_func_ptr4 to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_isr = 0; + memcpy((void*)(&cmock_call_instance->Expected_parameter), (void*)(¶meter), + sizeof(uintptr_t[sizeof(parameter) == sizeof(uintptr_t) ? 1 : -1])); /* add uintptr_t to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_parameter = 0; +} + +void arch_interrupt_set_isr_nmi_param_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)1; +} + +void arch_interrupt_set_isr_nmi_param_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool) + Mock.arch_interrupt_set_isr_nmi_param_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_nmi_param_CallInstance); + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; +} + +void arch_interrupt_set_isr_nmi_param_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_set_isr_nmi_param_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_nmi_param_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_nmi_param_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_set_isr_nmi_param(cmock_call_instance, isr, parameter); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_set_isr_nmi_param_AddCallback(CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_param_CallbackBool = (char)1; + Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_nmi_param_Stub(CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_nmi_param_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_param_CallbackBool = (char)0; + Mock.arch_interrupt_set_isr_nmi_param_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_nmi_param_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_isr = 1; +} + +void arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_parameter(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_nmi_param_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_nmi_param_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_parameter = 1; +} + +int arch_interrupt_set_isr_fault(cmock_fwk_arch_func_ptr5 isr) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_set_isr_fault); + cmock_call_instance = (CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_set_isr_fault_CallInstance); + Mock.arch_interrupt_set_isr_fault_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_fault_CallInstance); + if (Mock.arch_interrupt_set_isr_fault_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_set_isr_fault_FinalReturn; + Mock.arch_interrupt_set_isr_fault_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_set_isr_fault_CallbackBool && + Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer(isr, Mock.arch_interrupt_set_isr_fault_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_isr) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_set_isr_fault,CMockString_isr); + UNITY_TEST_ASSERT_EQUAL_PTR(cmock_call_instance->Expected_isr, isr, cmock_line, CMockStringMismatch); + } + } + if (Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer(isr, Mock.arch_interrupt_set_isr_fault_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_set_isr_fault(CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr5 isr); +void CMockExpectParameters_arch_interrupt_set_isr_fault(CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance, cmock_fwk_arch_func_ptr5 isr) +{ + memcpy((void*)(&cmock_call_instance->Expected_isr), (void*)(&isr), + sizeof(cmock_fwk_arch_func_ptr5[sizeof(isr) == sizeof(cmock_fwk_arch_func_ptr5) ? 1 : -1])); /* add cmock_fwk_arch_func_ptr5 to :treat_as_array if this causes an error */ + cmock_call_instance->IgnoreArg_isr = 0; +} + +void arch_interrupt_set_isr_fault_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_fault_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_fault_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)1; +} + +void arch_interrupt_set_isr_fault_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_set_isr_fault_IgnoreBool) + Mock.arch_interrupt_set_isr_fault_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_set_isr_fault_CallInstance); + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; +} + +void arch_interrupt_set_isr_fault_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_set_isr_fault_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_fault_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; cmock_call_instance->ReturnVal = cmock_to_return; cmock_call_instance->ExpectAnyArgsBool = (char)1; } -void fwk_arch_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_init_driver* driver, int cmock_to_return) +void arch_interrupt_set_isr_fault_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr5 isr, int cmock_to_return) { - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_init_CALL_INSTANCE)); - CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE)); + CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_arch_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_init_CallInstance, cmock_guts_index); - Mock.fwk_arch_init_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_fault_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_set_isr_fault_CallInstance, cmock_guts_index); + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_fwk_arch_init(cmock_call_instance, driver, 1); + CMockExpectParameters_arch_interrupt_set_isr_fault(cmock_call_instance, isr); cmock_call_instance->ReturnVal = cmock_to_return; } -void fwk_arch_init_AddCallback(CMOCK_fwk_arch_init_CALLBACK Callback) +void arch_interrupt_set_isr_fault_AddCallback(CMOCK_arch_interrupt_set_isr_fault_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_fault_CallbackBool = (char)1; + Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_fault_Stub(CMOCK_arch_interrupt_set_isr_fault_CALLBACK Callback) +{ + Mock.arch_interrupt_set_isr_fault_IgnoreBool = (char)0; + Mock.arch_interrupt_set_isr_fault_CallbackBool = (char)0; + Mock.arch_interrupt_set_isr_fault_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_set_isr_fault_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_set_isr_fault_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_set_isr_fault_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_isr = 1; +} + +int arch_interrupt_get_current(unsigned int* interrupt) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_get_current); + cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_get_current_CallInstance); + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_get_current_CallInstance); + if (Mock.arch_interrupt_get_current_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_get_current_FinalReturn; + Mock.arch_interrupt_get_current_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_get_current_CallbackBool && + Mock.arch_interrupt_get_current_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.arch_interrupt_get_current_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_get_current_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (!cmock_call_instance->ExpectAnyArgsBool) + { + if (!cmock_call_instance->IgnoreArg_interrupt) + { + UNITY_SET_DETAILS(CMockString_arch_interrupt_get_current,CMockString_interrupt); + if (cmock_call_instance->Expected_interrupt == NULL) + { UNITY_TEST_ASSERT_NULL(interrupt, cmock_line, CMockStringExpNULL); } + else + { UNITY_TEST_ASSERT_EQUAL_HEX32_ARRAY(cmock_call_instance->Expected_interrupt, interrupt, cmock_call_instance->Expected_interrupt_Depth, cmock_line, CMockStringMismatch); } + } + } + if (Mock.arch_interrupt_get_current_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_get_current_CallbackFunctionPointer(interrupt, Mock.arch_interrupt_get_current_CallbackCalls++); + } + if (cmock_call_instance->ReturnThruPtr_interrupt_Used) + { + UNITY_TEST_ASSERT_NOT_NULL(interrupt, cmock_line, CMockStringPtrIsNULL); + memcpy((void*)interrupt, (void*)cmock_call_instance->ReturnThruPtr_interrupt_Val, + cmock_call_instance->ReturnThruPtr_interrupt_Size); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void CMockExpectParameters_arch_interrupt_get_current(CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance, unsigned int* interrupt, int interrupt_Depth); +void CMockExpectParameters_arch_interrupt_get_current(CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance, unsigned int* interrupt, int interrupt_Depth) +{ + cmock_call_instance->Expected_interrupt = interrupt; + cmock_call_instance->Expected_interrupt_Depth = interrupt_Depth; + cmock_call_instance->IgnoreArg_interrupt = 0; + cmock_call_instance->ReturnThruPtr_interrupt_Used = 0; +} + +void arch_interrupt_get_current_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_get_current_CALL_INSTANCE)); + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_get_current_CallInstance, cmock_guts_index); + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_get_current_IgnoreBool = (char)1; +} + +void arch_interrupt_get_current_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_get_current_IgnoreBool) + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_get_current_CallInstance); + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; +} + +void arch_interrupt_get_current_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_get_current_CALL_INSTANCE)); + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_get_current_CallInstance, cmock_guts_index); + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + cmock_call_instance->ExpectAnyArgsBool = (char)1; +} + +void arch_interrupt_get_current_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_get_current_CALL_INSTANCE)); + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_get_current_CallInstance, cmock_guts_index); + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_get_current(cmock_call_instance, interrupt, 1); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_get_current_AddCallback(CMOCK_arch_interrupt_get_current_CALLBACK Callback) +{ + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + Mock.arch_interrupt_get_current_CallbackBool = (char)1; + Mock.arch_interrupt_get_current_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_get_current_Stub(CMOCK_arch_interrupt_get_current_CALLBACK Callback) +{ + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + Mock.arch_interrupt_get_current_CallbackBool = (char)0; + Mock.arch_interrupt_get_current_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_get_current_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, int interrupt_Depth, int cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_get_current_CALL_INSTANCE)); + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_get_current_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_get_current_CallInstance, cmock_guts_index); + Mock.arch_interrupt_get_current_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + CMockExpectParameters_arch_interrupt_get_current(cmock_call_instance, interrupt, interrupt_Depth); + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_get_current_CMockReturnMemThruPtr_interrupt(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, size_t cmock_size) +{ + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_get_current_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringPtrPreExp); + cmock_call_instance->ReturnThruPtr_interrupt_Used = 1; + cmock_call_instance->ReturnThruPtr_interrupt_Val = interrupt; + cmock_call_instance->ReturnThruPtr_interrupt_Size = cmock_size; +} + +void arch_interrupt_get_current_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line) +{ + CMOCK_arch_interrupt_get_current_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_get_current_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.arch_interrupt_get_current_CallInstance)); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); + cmock_call_instance->IgnoreArg_interrupt = 1; +} + +bool arch_interrupt_is_interrupt_context(void) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_arch_interrupt_is_interrupt_context); + cmock_call_instance = (CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.arch_interrupt_is_interrupt_context_CallInstance); + Mock.arch_interrupt_is_interrupt_context_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_interrupt_context_CallInstance); + if (Mock.arch_interrupt_is_interrupt_context_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.arch_interrupt_is_interrupt_context_FinalReturn; + Mock.arch_interrupt_is_interrupt_context_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.arch_interrupt_is_interrupt_context_CallbackBool && + Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer != NULL) + { + bool cmock_cb_ret = Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer(Mock.arch_interrupt_is_interrupt_context_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer(Mock.arch_interrupt_is_interrupt_context_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void arch_interrupt_is_interrupt_context_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, bool cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_interrupt_context_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_interrupt_context_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)1; +} + +void arch_interrupt_is_interrupt_context_CMockStopIgnore(void) +{ + if(Mock.arch_interrupt_is_interrupt_context_IgnoreBool) + Mock.arch_interrupt_is_interrupt_context_CallInstance = CMock_Guts_MemNext(Mock.arch_interrupt_is_interrupt_context_CallInstance); + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)0; +} + +void arch_interrupt_is_interrupt_context_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, bool cmock_to_return) +{ + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE)); + CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE* cmock_call_instance = (CMOCK_arch_interrupt_is_interrupt_context_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.arch_interrupt_is_interrupt_context_CallInstance = CMock_Guts_MemChain(Mock.arch_interrupt_is_interrupt_context_CallInstance, cmock_guts_index); + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)0; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; +} + +void arch_interrupt_is_interrupt_context_AddCallback(CMOCK_arch_interrupt_is_interrupt_context_CALLBACK Callback) +{ + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)0; + Mock.arch_interrupt_is_interrupt_context_CallbackBool = (char)1; + Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer = Callback; +} + +void arch_interrupt_is_interrupt_context_Stub(CMOCK_arch_interrupt_is_interrupt_context_CALLBACK Callback) +{ + Mock.arch_interrupt_is_interrupt_context_IgnoreBool = (char)0; + Mock.arch_interrupt_is_interrupt_context_CallbackBool = (char)0; + Mock.arch_interrupt_is_interrupt_context_CallbackFunctionPointer = Callback; +} + +int fwk_arch_init(void) +{ + UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; + CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_fwk_arch_init); + cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.fwk_arch_init_CallInstance); + Mock.fwk_arch_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_init_CallInstance); + if (Mock.fwk_arch_init_IgnoreBool) + { + UNITY_CLR_DETAILS(); + if (cmock_call_instance == NULL) + return Mock.fwk_arch_init_FinalReturn; + Mock.fwk_arch_init_FinalReturn = cmock_call_instance->ReturnVal; + return cmock_call_instance->ReturnVal; + } + if (!Mock.fwk_arch_init_CallbackBool && + Mock.fwk_arch_init_CallbackFunctionPointer != NULL) + { + int cmock_cb_ret = Mock.fwk_arch_init_CallbackFunctionPointer(Mock.fwk_arch_init_CallbackCalls++); + UNITY_CLR_DETAILS(); + return cmock_cb_ret; + } + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); + cmock_line = cmock_call_instance->LineNumber; + if (Mock.fwk_arch_init_CallbackFunctionPointer != NULL) + { + cmock_call_instance->ReturnVal = Mock.fwk_arch_init_CallbackFunctionPointer(Mock.fwk_arch_init_CallbackCalls++); + } + UNITY_CLR_DETAILS(); + return cmock_call_instance->ReturnVal; +} + +void fwk_arch_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_init_CALL_INSTANCE)); + CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); + memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); + Mock.fwk_arch_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_init_CallInstance, cmock_guts_index); Mock.fwk_arch_init_IgnoreBool = (char)0; - Mock.fwk_arch_init_CallbackBool = (char)1; - Mock.fwk_arch_init_CallbackFunctionPointer = Callback; + cmock_call_instance->LineNumber = cmock_line; + cmock_call_instance->ExpectAnyArgsBool = (char)0; + cmock_call_instance->ReturnVal = cmock_to_return; + Mock.fwk_arch_init_IgnoreBool = (char)1; } -void fwk_arch_init_Stub(CMOCK_fwk_arch_init_CALLBACK Callback) +void fwk_arch_init_CMockStopIgnore(void) { + if(Mock.fwk_arch_init_IgnoreBool) + Mock.fwk_arch_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_init_CallInstance); Mock.fwk_arch_init_IgnoreBool = (char)0; - Mock.fwk_arch_init_CallbackBool = (char)0; - Mock.fwk_arch_init_CallbackFunctionPointer = Callback; } -void fwk_arch_init_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_init_driver* driver, int driver_Depth, int cmock_to_return) +void fwk_arch_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_init_CALL_INSTANCE)); CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); @@ -239,15 +2484,21 @@ void fwk_arch_init_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, con Mock.fwk_arch_init_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_fwk_arch_init(cmock_call_instance, driver, driver_Depth); cmock_call_instance->ReturnVal = cmock_to_return; } -void fwk_arch_init_CMockIgnoreArg_driver(UNITY_LINE_TYPE cmock_line) +void fwk_arch_init_AddCallback(CMOCK_fwk_arch_init_CALLBACK Callback) { - CMOCK_fwk_arch_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.fwk_arch_init_CallInstance)); - UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); - cmock_call_instance->IgnoreArg_driver = 1; + Mock.fwk_arch_init_IgnoreBool = (char)0; + Mock.fwk_arch_init_CallbackBool = (char)1; + Mock.fwk_arch_init_CallbackFunctionPointer = Callback; +} + +void fwk_arch_init_Stub(CMOCK_fwk_arch_init_CALLBACK Callback) +{ + Mock.fwk_arch_init_IgnoreBool = (char)0; + Mock.fwk_arch_init_CallbackBool = (char)0; + Mock.fwk_arch_init_CallbackFunctionPointer = Callback; } int fwk_arch_deinit(void) diff --git a/unit_test/unity_mocks/mocks/Mockfwk_arch.h b/unit_test/unity_mocks/mocks/Mockfwk_arch.h index c0cede164..b4c78f3be 100644 --- a/unit_test/unity_mocks/mocks/Mockfwk_arch.h +++ b/unit_test/unity_mocks/mocks/Mockfwk_arch.h @@ -22,24 +22,251 @@ void Mockfwk_arch_Destroy(void); void Mockfwk_arch_Verify(void); +typedef void(*cmock_fwk_arch_func_ptr1)(void); +typedef void(*cmock_fwk_arch_func_ptr2)(uintptr_t param); +typedef void(*cmock_fwk_arch_func_ptr3)(void); +typedef void(*cmock_fwk_arch_func_ptr4)(uintptr_t param); +typedef void(*cmock_fwk_arch_func_ptr5)(void); +#define arch_interrupt_global_enable_IgnoreAndReturn(cmock_retval) arch_interrupt_global_enable_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_global_enable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_global_enable_StopIgnore() arch_interrupt_global_enable_CMockStopIgnore() +void arch_interrupt_global_enable_CMockStopIgnore(void); +#define arch_interrupt_global_enable_ExpectAndReturn(cmock_retval) arch_interrupt_global_enable_CMockExpectAndReturn(__LINE__, cmock_retval) +void arch_interrupt_global_enable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_global_enable_CALLBACK)(int cmock_num_calls); +void arch_interrupt_global_enable_AddCallback(CMOCK_arch_interrupt_global_enable_CALLBACK Callback); +void arch_interrupt_global_enable_Stub(CMOCK_arch_interrupt_global_enable_CALLBACK Callback); +#define arch_interrupt_global_enable_StubWithCallback arch_interrupt_global_enable_Stub +#define arch_interrupt_global_disable_IgnoreAndReturn(cmock_retval) arch_interrupt_global_disable_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_global_disable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_global_disable_StopIgnore() arch_interrupt_global_disable_CMockStopIgnore() +void arch_interrupt_global_disable_CMockStopIgnore(void); +#define arch_interrupt_global_disable_ExpectAndReturn(cmock_retval) arch_interrupt_global_disable_CMockExpectAndReturn(__LINE__, cmock_retval) +void arch_interrupt_global_disable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_global_disable_CALLBACK)(int cmock_num_calls); +void arch_interrupt_global_disable_AddCallback(CMOCK_arch_interrupt_global_disable_CALLBACK Callback); +void arch_interrupt_global_disable_Stub(CMOCK_arch_interrupt_global_disable_CALLBACK Callback); +#define arch_interrupt_global_disable_StubWithCallback arch_interrupt_global_disable_Stub +#define arch_interrupt_is_enabled_IgnoreAndReturn(cmock_retval) arch_interrupt_is_enabled_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_enabled_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_is_enabled_StopIgnore() arch_interrupt_is_enabled_CMockStopIgnore() +void arch_interrupt_is_enabled_CMockStopIgnore(void); +#define arch_interrupt_is_enabled_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_is_enabled_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_enabled_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_is_enabled_ExpectAndReturn(interrupt, enabled, cmock_retval) arch_interrupt_is_enabled_CMockExpectAndReturn(__LINE__, interrupt, enabled, cmock_retval) +void arch_interrupt_is_enabled_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* enabled, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_is_enabled_CALLBACK)(unsigned int interrupt, bool* enabled, int cmock_num_calls); +void arch_interrupt_is_enabled_AddCallback(CMOCK_arch_interrupt_is_enabled_CALLBACK Callback); +void arch_interrupt_is_enabled_Stub(CMOCK_arch_interrupt_is_enabled_CALLBACK Callback); +#define arch_interrupt_is_enabled_StubWithCallback arch_interrupt_is_enabled_Stub +#define arch_interrupt_is_enabled_ExpectWithArrayAndReturn(interrupt, enabled, enabled_Depth, cmock_retval) arch_interrupt_is_enabled_CMockExpectWithArrayAndReturn(__LINE__, interrupt, enabled, enabled_Depth, cmock_retval) +void arch_interrupt_is_enabled_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* enabled, int enabled_Depth, int cmock_to_return); +#define arch_interrupt_is_enabled_ReturnThruPtr_enabled(enabled) arch_interrupt_is_enabled_CMockReturnMemThruPtr_enabled(__LINE__, enabled, sizeof(bool)) +#define arch_interrupt_is_enabled_ReturnArrayThruPtr_enabled(enabled, cmock_len) arch_interrupt_is_enabled_CMockReturnMemThruPtr_enabled(__LINE__, enabled, cmock_len * sizeof(*enabled)) +#define arch_interrupt_is_enabled_ReturnMemThruPtr_enabled(enabled, cmock_size) arch_interrupt_is_enabled_CMockReturnMemThruPtr_enabled(__LINE__, enabled, cmock_size) +void arch_interrupt_is_enabled_CMockReturnMemThruPtr_enabled(UNITY_LINE_TYPE cmock_line, bool* enabled, size_t cmock_size); +#define arch_interrupt_is_enabled_IgnoreArg_interrupt() arch_interrupt_is_enabled_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_is_enabled_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_is_enabled_IgnoreArg_enabled() arch_interrupt_is_enabled_CMockIgnoreArg_enabled(__LINE__) +void arch_interrupt_is_enabled_CMockIgnoreArg_enabled(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_enable_IgnoreAndReturn(cmock_retval) arch_interrupt_enable_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_enable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_enable_StopIgnore() arch_interrupt_enable_CMockStopIgnore() +void arch_interrupt_enable_CMockStopIgnore(void); +#define arch_interrupt_enable_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_enable_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_enable_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_enable_ExpectAndReturn(interrupt, cmock_retval) arch_interrupt_enable_CMockExpectAndReturn(__LINE__, interrupt, cmock_retval) +void arch_interrupt_enable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_enable_CALLBACK)(unsigned int interrupt, int cmock_num_calls); +void arch_interrupt_enable_AddCallback(CMOCK_arch_interrupt_enable_CALLBACK Callback); +void arch_interrupt_enable_Stub(CMOCK_arch_interrupt_enable_CALLBACK Callback); +#define arch_interrupt_enable_StubWithCallback arch_interrupt_enable_Stub +#define arch_interrupt_enable_IgnoreArg_interrupt() arch_interrupt_enable_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_enable_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_disable_IgnoreAndReturn(cmock_retval) arch_interrupt_disable_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_disable_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_disable_StopIgnore() arch_interrupt_disable_CMockStopIgnore() +void arch_interrupt_disable_CMockStopIgnore(void); +#define arch_interrupt_disable_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_disable_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_disable_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_disable_ExpectAndReturn(interrupt, cmock_retval) arch_interrupt_disable_CMockExpectAndReturn(__LINE__, interrupt, cmock_retval) +void arch_interrupt_disable_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_disable_CALLBACK)(unsigned int interrupt, int cmock_num_calls); +void arch_interrupt_disable_AddCallback(CMOCK_arch_interrupt_disable_CALLBACK Callback); +void arch_interrupt_disable_Stub(CMOCK_arch_interrupt_disable_CALLBACK Callback); +#define arch_interrupt_disable_StubWithCallback arch_interrupt_disable_Stub +#define arch_interrupt_disable_IgnoreArg_interrupt() arch_interrupt_disable_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_disable_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_is_pending_IgnoreAndReturn(cmock_retval) arch_interrupt_is_pending_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_is_pending_StopIgnore() arch_interrupt_is_pending_CMockStopIgnore() +void arch_interrupt_is_pending_CMockStopIgnore(void); +#define arch_interrupt_is_pending_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_is_pending_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_is_pending_ExpectAndReturn(interrupt, pending, cmock_retval) arch_interrupt_is_pending_CMockExpectAndReturn(__LINE__, interrupt, pending, cmock_retval) +void arch_interrupt_is_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* pending, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_is_pending_CALLBACK)(unsigned int interrupt, bool* pending, int cmock_num_calls); +void arch_interrupt_is_pending_AddCallback(CMOCK_arch_interrupt_is_pending_CALLBACK Callback); +void arch_interrupt_is_pending_Stub(CMOCK_arch_interrupt_is_pending_CALLBACK Callback); +#define arch_interrupt_is_pending_StubWithCallback arch_interrupt_is_pending_Stub +#define arch_interrupt_is_pending_ExpectWithArrayAndReturn(interrupt, pending, pending_Depth, cmock_retval) arch_interrupt_is_pending_CMockExpectWithArrayAndReturn(__LINE__, interrupt, pending, pending_Depth, cmock_retval) +void arch_interrupt_is_pending_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, bool* pending, int pending_Depth, int cmock_to_return); +#define arch_interrupt_is_pending_ReturnThruPtr_pending(pending) arch_interrupt_is_pending_CMockReturnMemThruPtr_pending(__LINE__, pending, sizeof(bool)) +#define arch_interrupt_is_pending_ReturnArrayThruPtr_pending(pending, cmock_len) arch_interrupt_is_pending_CMockReturnMemThruPtr_pending(__LINE__, pending, cmock_len * sizeof(*pending)) +#define arch_interrupt_is_pending_ReturnMemThruPtr_pending(pending, cmock_size) arch_interrupt_is_pending_CMockReturnMemThruPtr_pending(__LINE__, pending, cmock_size) +void arch_interrupt_is_pending_CMockReturnMemThruPtr_pending(UNITY_LINE_TYPE cmock_line, bool* pending, size_t cmock_size); +#define arch_interrupt_is_pending_IgnoreArg_interrupt() arch_interrupt_is_pending_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_is_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_is_pending_IgnoreArg_pending() arch_interrupt_is_pending_CMockIgnoreArg_pending(__LINE__) +void arch_interrupt_is_pending_CMockIgnoreArg_pending(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_pending_IgnoreAndReturn(cmock_retval) arch_interrupt_set_pending_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_pending_StopIgnore() arch_interrupt_set_pending_CMockStopIgnore() +void arch_interrupt_set_pending_CMockStopIgnore(void); +#define arch_interrupt_set_pending_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_pending_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_pending_ExpectAndReturn(interrupt, cmock_retval) arch_interrupt_set_pending_CMockExpectAndReturn(__LINE__, interrupt, cmock_retval) +void arch_interrupt_set_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_pending_CALLBACK)(unsigned int interrupt, int cmock_num_calls); +void arch_interrupt_set_pending_AddCallback(CMOCK_arch_interrupt_set_pending_CALLBACK Callback); +void arch_interrupt_set_pending_Stub(CMOCK_arch_interrupt_set_pending_CALLBACK Callback); +#define arch_interrupt_set_pending_StubWithCallback arch_interrupt_set_pending_Stub +#define arch_interrupt_set_pending_IgnoreArg_interrupt() arch_interrupt_set_pending_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_set_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_clear_pending_IgnoreAndReturn(cmock_retval) arch_interrupt_clear_pending_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_clear_pending_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_clear_pending_StopIgnore() arch_interrupt_clear_pending_CMockStopIgnore() +void arch_interrupt_clear_pending_CMockStopIgnore(void); +#define arch_interrupt_clear_pending_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_clear_pending_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_clear_pending_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_clear_pending_ExpectAndReturn(interrupt, cmock_retval) arch_interrupt_clear_pending_CMockExpectAndReturn(__LINE__, interrupt, cmock_retval) +void arch_interrupt_clear_pending_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_clear_pending_CALLBACK)(unsigned int interrupt, int cmock_num_calls); +void arch_interrupt_clear_pending_AddCallback(CMOCK_arch_interrupt_clear_pending_CALLBACK Callback); +void arch_interrupt_clear_pending_Stub(CMOCK_arch_interrupt_clear_pending_CALLBACK Callback); +#define arch_interrupt_clear_pending_StubWithCallback arch_interrupt_clear_pending_Stub +#define arch_interrupt_clear_pending_IgnoreArg_interrupt() arch_interrupt_clear_pending_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_clear_pending_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_irq_IgnoreAndReturn(cmock_retval) arch_interrupt_set_isr_irq_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_irq_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_irq_StopIgnore() arch_interrupt_set_isr_irq_CMockStopIgnore() +void arch_interrupt_set_isr_irq_CMockStopIgnore(void); +#define arch_interrupt_set_isr_irq_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_isr_irq_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_irq_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_irq_ExpectAndReturn(interrupt, isr, cmock_retval) arch_interrupt_set_isr_irq_CMockExpectAndReturn(__LINE__, interrupt, isr, cmock_retval) +void arch_interrupt_set_isr_irq_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_isr_irq_CALLBACK)(unsigned int interrupt, cmock_fwk_arch_func_ptr1 isr, int cmock_num_calls); +void arch_interrupt_set_isr_irq_AddCallback(CMOCK_arch_interrupt_set_isr_irq_CALLBACK Callback); +void arch_interrupt_set_isr_irq_Stub(CMOCK_arch_interrupt_set_isr_irq_CALLBACK Callback); +#define arch_interrupt_set_isr_irq_StubWithCallback arch_interrupt_set_isr_irq_Stub +#define arch_interrupt_set_isr_irq_IgnoreArg_interrupt() arch_interrupt_set_isr_irq_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_set_isr_irq_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_irq_IgnoreArg_isr() arch_interrupt_set_isr_irq_CMockIgnoreArg_isr(__LINE__) +void arch_interrupt_set_isr_irq_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_irq_param_IgnoreAndReturn(cmock_retval) arch_interrupt_set_isr_irq_param_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_irq_param_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_irq_param_StopIgnore() arch_interrupt_set_isr_irq_param_CMockStopIgnore() +void arch_interrupt_set_isr_irq_param_CMockStopIgnore(void); +#define arch_interrupt_set_isr_irq_param_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_isr_irq_param_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_irq_param_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_irq_param_ExpectAndReturn(interrupt, isr, parameter, cmock_retval) arch_interrupt_set_isr_irq_param_CMockExpectAndReturn(__LINE__, interrupt, isr, parameter, cmock_retval) +void arch_interrupt_set_isr_irq_param_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK)(unsigned int interrupt, cmock_fwk_arch_func_ptr2 isr, uintptr_t parameter, int cmock_num_calls); +void arch_interrupt_set_isr_irq_param_AddCallback(CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK Callback); +void arch_interrupt_set_isr_irq_param_Stub(CMOCK_arch_interrupt_set_isr_irq_param_CALLBACK Callback); +#define arch_interrupt_set_isr_irq_param_StubWithCallback arch_interrupt_set_isr_irq_param_Stub +#define arch_interrupt_set_isr_irq_param_IgnoreArg_interrupt() arch_interrupt_set_isr_irq_param_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_irq_param_IgnoreArg_isr() arch_interrupt_set_isr_irq_param_CMockIgnoreArg_isr(__LINE__) +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_irq_param_IgnoreArg_parameter() arch_interrupt_set_isr_irq_param_CMockIgnoreArg_parameter(__LINE__) +void arch_interrupt_set_isr_irq_param_CMockIgnoreArg_parameter(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_nmi_IgnoreAndReturn(cmock_retval) arch_interrupt_set_isr_nmi_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_nmi_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_nmi_StopIgnore() arch_interrupt_set_isr_nmi_CMockStopIgnore() +void arch_interrupt_set_isr_nmi_CMockStopIgnore(void); +#define arch_interrupt_set_isr_nmi_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_isr_nmi_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_nmi_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_nmi_ExpectAndReturn(isr, cmock_retval) arch_interrupt_set_isr_nmi_CMockExpectAndReturn(__LINE__, isr, cmock_retval) +void arch_interrupt_set_isr_nmi_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr3 isr, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_isr_nmi_CALLBACK)(cmock_fwk_arch_func_ptr3 isr, int cmock_num_calls); +void arch_interrupt_set_isr_nmi_AddCallback(CMOCK_arch_interrupt_set_isr_nmi_CALLBACK Callback); +void arch_interrupt_set_isr_nmi_Stub(CMOCK_arch_interrupt_set_isr_nmi_CALLBACK Callback); +#define arch_interrupt_set_isr_nmi_StubWithCallback arch_interrupt_set_isr_nmi_Stub +#define arch_interrupt_set_isr_nmi_IgnoreArg_isr() arch_interrupt_set_isr_nmi_CMockIgnoreArg_isr(__LINE__) +void arch_interrupt_set_isr_nmi_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_nmi_param_IgnoreAndReturn(cmock_retval) arch_interrupt_set_isr_nmi_param_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_nmi_param_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_nmi_param_StopIgnore() arch_interrupt_set_isr_nmi_param_CMockStopIgnore() +void arch_interrupt_set_isr_nmi_param_CMockStopIgnore(void); +#define arch_interrupt_set_isr_nmi_param_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_isr_nmi_param_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_nmi_param_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_nmi_param_ExpectAndReturn(isr, parameter, cmock_retval) arch_interrupt_set_isr_nmi_param_CMockExpectAndReturn(__LINE__, isr, parameter, cmock_retval) +void arch_interrupt_set_isr_nmi_param_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK)(cmock_fwk_arch_func_ptr4 isr, uintptr_t parameter, int cmock_num_calls); +void arch_interrupt_set_isr_nmi_param_AddCallback(CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK Callback); +void arch_interrupt_set_isr_nmi_param_Stub(CMOCK_arch_interrupt_set_isr_nmi_param_CALLBACK Callback); +#define arch_interrupt_set_isr_nmi_param_StubWithCallback arch_interrupt_set_isr_nmi_param_Stub +#define arch_interrupt_set_isr_nmi_param_IgnoreArg_isr() arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_isr(__LINE__) +void arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_nmi_param_IgnoreArg_parameter() arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_parameter(__LINE__) +void arch_interrupt_set_isr_nmi_param_CMockIgnoreArg_parameter(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_set_isr_fault_IgnoreAndReturn(cmock_retval) arch_interrupt_set_isr_fault_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_fault_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_fault_StopIgnore() arch_interrupt_set_isr_fault_CMockStopIgnore() +void arch_interrupt_set_isr_fault_CMockStopIgnore(void); +#define arch_interrupt_set_isr_fault_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_set_isr_fault_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_set_isr_fault_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_set_isr_fault_ExpectAndReturn(isr, cmock_retval) arch_interrupt_set_isr_fault_CMockExpectAndReturn(__LINE__, isr, cmock_retval) +void arch_interrupt_set_isr_fault_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, cmock_fwk_arch_func_ptr5 isr, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_set_isr_fault_CALLBACK)(cmock_fwk_arch_func_ptr5 isr, int cmock_num_calls); +void arch_interrupt_set_isr_fault_AddCallback(CMOCK_arch_interrupt_set_isr_fault_CALLBACK Callback); +void arch_interrupt_set_isr_fault_Stub(CMOCK_arch_interrupt_set_isr_fault_CALLBACK Callback); +#define arch_interrupt_set_isr_fault_StubWithCallback arch_interrupt_set_isr_fault_Stub +#define arch_interrupt_set_isr_fault_IgnoreArg_isr() arch_interrupt_set_isr_fault_CMockIgnoreArg_isr(__LINE__) +void arch_interrupt_set_isr_fault_CMockIgnoreArg_isr(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_get_current_IgnoreAndReturn(cmock_retval) arch_interrupt_get_current_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_get_current_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_get_current_StopIgnore() arch_interrupt_get_current_CMockStopIgnore() +void arch_interrupt_get_current_CMockStopIgnore(void); +#define arch_interrupt_get_current_ExpectAnyArgsAndReturn(cmock_retval) arch_interrupt_get_current_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) +void arch_interrupt_get_current_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define arch_interrupt_get_current_ExpectAndReturn(interrupt, cmock_retval) arch_interrupt_get_current_CMockExpectAndReturn(__LINE__, interrupt, cmock_retval) +void arch_interrupt_get_current_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, int cmock_to_return); +typedef int (* CMOCK_arch_interrupt_get_current_CALLBACK)(unsigned int* interrupt, int cmock_num_calls); +void arch_interrupt_get_current_AddCallback(CMOCK_arch_interrupt_get_current_CALLBACK Callback); +void arch_interrupt_get_current_Stub(CMOCK_arch_interrupt_get_current_CALLBACK Callback); +#define arch_interrupt_get_current_StubWithCallback arch_interrupt_get_current_Stub +#define arch_interrupt_get_current_ExpectWithArrayAndReturn(interrupt, interrupt_Depth, cmock_retval) arch_interrupt_get_current_CMockExpectWithArrayAndReturn(__LINE__, interrupt, interrupt_Depth, cmock_retval) +void arch_interrupt_get_current_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, int interrupt_Depth, int cmock_to_return); +#define arch_interrupt_get_current_ReturnThruPtr_interrupt(interrupt) arch_interrupt_get_current_CMockReturnMemThruPtr_interrupt(__LINE__, interrupt, sizeof(unsigned int)) +#define arch_interrupt_get_current_ReturnArrayThruPtr_interrupt(interrupt, cmock_len) arch_interrupt_get_current_CMockReturnMemThruPtr_interrupt(__LINE__, interrupt, cmock_len * sizeof(*interrupt)) +#define arch_interrupt_get_current_ReturnMemThruPtr_interrupt(interrupt, cmock_size) arch_interrupt_get_current_CMockReturnMemThruPtr_interrupt(__LINE__, interrupt, cmock_size) +void arch_interrupt_get_current_CMockReturnMemThruPtr_interrupt(UNITY_LINE_TYPE cmock_line, unsigned int* interrupt, size_t cmock_size); +#define arch_interrupt_get_current_IgnoreArg_interrupt() arch_interrupt_get_current_CMockIgnoreArg_interrupt(__LINE__) +void arch_interrupt_get_current_CMockIgnoreArg_interrupt(UNITY_LINE_TYPE cmock_line); +#define arch_interrupt_is_interrupt_context_IgnoreAndReturn(cmock_retval) arch_interrupt_is_interrupt_context_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_interrupt_context_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, bool cmock_to_return); +#define arch_interrupt_is_interrupt_context_StopIgnore() arch_interrupt_is_interrupt_context_CMockStopIgnore() +void arch_interrupt_is_interrupt_context_CMockStopIgnore(void); +#define arch_interrupt_is_interrupt_context_ExpectAndReturn(cmock_retval) arch_interrupt_is_interrupt_context_CMockExpectAndReturn(__LINE__, cmock_retval) +void arch_interrupt_is_interrupt_context_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, bool cmock_to_return); +typedef bool (* CMOCK_arch_interrupt_is_interrupt_context_CALLBACK)(int cmock_num_calls); +void arch_interrupt_is_interrupt_context_AddCallback(CMOCK_arch_interrupt_is_interrupt_context_CALLBACK Callback); +void arch_interrupt_is_interrupt_context_Stub(CMOCK_arch_interrupt_is_interrupt_context_CALLBACK Callback); +#define arch_interrupt_is_interrupt_context_StubWithCallback arch_interrupt_is_interrupt_context_Stub #define fwk_arch_init_IgnoreAndReturn(cmock_retval) fwk_arch_init_CMockIgnoreAndReturn(__LINE__, cmock_retval) void fwk_arch_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); #define fwk_arch_init_StopIgnore() fwk_arch_init_CMockStopIgnore() void fwk_arch_init_CMockStopIgnore(void); -#define fwk_arch_init_ExpectAnyArgsAndReturn(cmock_retval) fwk_arch_init_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) -void fwk_arch_init_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); -#define fwk_arch_init_ExpectAndReturn(driver, cmock_retval) fwk_arch_init_CMockExpectAndReturn(__LINE__, driver, cmock_retval) -void fwk_arch_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_init_driver* driver, int cmock_to_return); -typedef int (* CMOCK_fwk_arch_init_CALLBACK)(const struct fwk_arch_init_driver* driver, int cmock_num_calls); +#define fwk_arch_init_ExpectAndReturn(cmock_retval) fwk_arch_init_CMockExpectAndReturn(__LINE__, cmock_retval) +void fwk_arch_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +typedef int (* CMOCK_fwk_arch_init_CALLBACK)(int cmock_num_calls); void fwk_arch_init_AddCallback(CMOCK_fwk_arch_init_CALLBACK Callback); void fwk_arch_init_Stub(CMOCK_fwk_arch_init_CALLBACK Callback); #define fwk_arch_init_StubWithCallback fwk_arch_init_Stub -#define fwk_arch_init_ExpectWithArrayAndReturn(driver, driver_Depth, cmock_retval) fwk_arch_init_CMockExpectWithArrayAndReturn(__LINE__, driver, driver_Depth, cmock_retval) -void fwk_arch_init_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_init_driver* driver, int driver_Depth, int cmock_to_return); -#define fwk_arch_init_IgnoreArg_driver() fwk_arch_init_CMockIgnoreArg_driver(__LINE__) -void fwk_arch_init_CMockIgnoreArg_driver(UNITY_LINE_TYPE cmock_line); #define fwk_arch_deinit_IgnoreAndReturn(cmock_retval) fwk_arch_deinit_CMockIgnoreAndReturn(__LINE__, cmock_retval) void fwk_arch_deinit_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); #define fwk_arch_deinit_StopIgnore() fwk_arch_deinit_CMockStopIgnore() diff --git a/unit_test/unity_mocks/mocks/Mockfwk_interrupt.c b/unit_test/unity_mocks/mocks/Mockfwk_interrupt.c index 945bc1000..24e3c25b2 100644 --- a/unit_test/unity_mocks/mocks/Mockfwk_interrupt.c +++ b/unit_test/unity_mocks/mocks/Mockfwk_interrupt.c @@ -5,13 +5,12 @@ #include "cmock.h" #include "Mockfwk_interrupt.h" -static const char* CMockString_driver = "driver"; static const char* CMockString_enabled = "enabled"; +static const char* CMockString_fwk_arch_interrupt_init = "fwk_arch_interrupt_init"; static const char* CMockString_fwk_interrupt_clear_pending = "fwk_interrupt_clear_pending"; static const char* CMockString_fwk_interrupt_disable = "fwk_interrupt_disable"; static const char* CMockString_fwk_interrupt_enable = "fwk_interrupt_enable"; static const char* CMockString_fwk_interrupt_get_current = "fwk_interrupt_get_current"; -static const char* CMockString_fwk_interrupt_init = "fwk_interrupt_init"; static const char* CMockString_fwk_interrupt_is_enabled = "fwk_interrupt_is_enabled"; static const char* CMockString_fwk_interrupt_is_pending = "fwk_interrupt_is_pending"; static const char* CMockString_fwk_interrupt_set_isr = "fwk_interrupt_set_isr"; @@ -23,16 +22,13 @@ static const char* CMockString_isr = "isr"; static const char* CMockString_param = "param"; static const char* CMockString_pending = "pending"; -typedef struct _CMOCK_fwk_interrupt_init_CALL_INSTANCE +typedef struct _CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE { UNITY_LINE_TYPE LineNumber; char ExpectAnyArgsBool; int ReturnVal; - const struct fwk_arch_interrupt_driver* Expected_driver; - int Expected_driver_Depth; - char IgnoreArg_driver; -} CMOCK_fwk_interrupt_init_CALL_INSTANCE; +} CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE; typedef struct _CMOCK_fwk_interrupt_is_enabled_CALL_INSTANCE { @@ -156,12 +152,12 @@ typedef struct _CMOCK_fwk_is_interrupt_context_CALL_INSTANCE static struct Mockfwk_interruptInstance { - char fwk_interrupt_init_IgnoreBool; - int fwk_interrupt_init_FinalReturn; - char fwk_interrupt_init_CallbackBool; - CMOCK_fwk_interrupt_init_CALLBACK fwk_interrupt_init_CallbackFunctionPointer; - int fwk_interrupt_init_CallbackCalls; - CMOCK_MEM_INDEX_TYPE fwk_interrupt_init_CallInstance; + char fwk_arch_interrupt_init_IgnoreBool; + int fwk_arch_interrupt_init_FinalReturn; + char fwk_arch_interrupt_init_CallbackBool; + CMOCK_fwk_arch_interrupt_init_CALLBACK fwk_arch_interrupt_init_CallbackFunctionPointer; + int fwk_arch_interrupt_init_CallbackCalls; + CMOCK_MEM_INDEX_TYPE fwk_arch_interrupt_init_CallInstance; char fwk_interrupt_is_enabled_IgnoreBool; int fwk_interrupt_is_enabled_FinalReturn; char fwk_interrupt_is_enabled_CallbackBool; @@ -230,15 +226,15 @@ void Mockfwk_interrupt_Verify(void) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; CMOCK_MEM_INDEX_TYPE call_instance; - call_instance = Mock.fwk_interrupt_init_CallInstance; - if (Mock.fwk_interrupt_init_IgnoreBool) + call_instance = Mock.fwk_arch_interrupt_init_CallInstance; + if (Mock.fwk_arch_interrupt_init_IgnoreBool) call_instance = CMOCK_GUTS_NONE; if (CMOCK_GUTS_NONE != call_instance) { - UNITY_SET_DETAIL(CMockString_fwk_interrupt_init); + UNITY_SET_DETAIL(CMockString_fwk_arch_interrupt_init); UNITY_TEST_FAIL(cmock_line, CMockStringCalledLess); } - if (Mock.fwk_interrupt_init_CallbackFunctionPointer != NULL) + if (Mock.fwk_arch_interrupt_init_CallbackFunctionPointer != NULL) { call_instance = CMOCK_GUTS_NONE; (void)call_instance; @@ -386,139 +382,84 @@ void Mockfwk_interrupt_Destroy(void) memset(&Mock, 0, sizeof(Mock)); } -int fwk_interrupt_init(const struct fwk_arch_interrupt_driver* driver) +int fwk_arch_interrupt_init(void) { UNITY_LINE_TYPE cmock_line = TEST_LINE_NUM; - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance; - UNITY_SET_DETAIL(CMockString_fwk_interrupt_init); - cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.fwk_interrupt_init_CallInstance); - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_interrupt_init_CallInstance); - if (Mock.fwk_interrupt_init_IgnoreBool) + CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE* cmock_call_instance; + UNITY_SET_DETAIL(CMockString_fwk_arch_interrupt_init); + cmock_call_instance = (CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(Mock.fwk_arch_interrupt_init_CallInstance); + Mock.fwk_arch_interrupt_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_interrupt_init_CallInstance); + if (Mock.fwk_arch_interrupt_init_IgnoreBool) { UNITY_CLR_DETAILS(); if (cmock_call_instance == NULL) - return Mock.fwk_interrupt_init_FinalReturn; - Mock.fwk_interrupt_init_FinalReturn = cmock_call_instance->ReturnVal; + return Mock.fwk_arch_interrupt_init_FinalReturn; + Mock.fwk_arch_interrupt_init_FinalReturn = cmock_call_instance->ReturnVal; return cmock_call_instance->ReturnVal; } - if (!Mock.fwk_interrupt_init_CallbackBool && - Mock.fwk_interrupt_init_CallbackFunctionPointer != NULL) + if (!Mock.fwk_arch_interrupt_init_CallbackBool && + Mock.fwk_arch_interrupt_init_CallbackFunctionPointer != NULL) { - int cmock_cb_ret = Mock.fwk_interrupt_init_CallbackFunctionPointer(driver, Mock.fwk_interrupt_init_CallbackCalls++); + int cmock_cb_ret = Mock.fwk_arch_interrupt_init_CallbackFunctionPointer(Mock.fwk_arch_interrupt_init_CallbackCalls++); UNITY_CLR_DETAILS(); return cmock_cb_ret; } UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringCalledMore); cmock_line = cmock_call_instance->LineNumber; - if (!cmock_call_instance->ExpectAnyArgsBool) - { - if (!cmock_call_instance->IgnoreArg_driver) - { - UNITY_SET_DETAILS(CMockString_fwk_interrupt_init,CMockString_driver); - if (cmock_call_instance->Expected_driver == NULL) - { UNITY_TEST_ASSERT_NULL(driver, cmock_line, CMockStringExpNULL); } - else - { UNITY_TEST_ASSERT_EQUAL_MEMORY_ARRAY((void*)(cmock_call_instance->Expected_driver), (void*)(driver), sizeof(const struct fwk_arch_interrupt_driver), cmock_call_instance->Expected_driver_Depth, cmock_line, CMockStringMismatch); } - } - } - if (Mock.fwk_interrupt_init_CallbackFunctionPointer != NULL) + if (Mock.fwk_arch_interrupt_init_CallbackFunctionPointer != NULL) { - cmock_call_instance->ReturnVal = Mock.fwk_interrupt_init_CallbackFunctionPointer(driver, Mock.fwk_interrupt_init_CallbackCalls++); + cmock_call_instance->ReturnVal = Mock.fwk_arch_interrupt_init_CallbackFunctionPointer(Mock.fwk_arch_interrupt_init_CallbackCalls++); } UNITY_CLR_DETAILS(); return cmock_call_instance->ReturnVal; } -void CMockExpectParameters_fwk_interrupt_init(CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance, const struct fwk_arch_interrupt_driver* driver, int driver_Depth); -void CMockExpectParameters_fwk_interrupt_init(CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance, const struct fwk_arch_interrupt_driver* driver, int driver_Depth) +void fwk_arch_interrupt_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { - cmock_call_instance->Expected_driver = driver; - cmock_call_instance->Expected_driver_Depth = driver_Depth; - cmock_call_instance->IgnoreArg_driver = 0; -} - -void fwk_interrupt_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) -{ - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_interrupt_init_CALL_INSTANCE)); - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE)); + CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_interrupt_init_CallInstance, cmock_guts_index); - Mock.fwk_interrupt_init_IgnoreBool = (char)0; + Mock.fwk_arch_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_interrupt_init_CallInstance, cmock_guts_index); + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; cmock_call_instance->ReturnVal = cmock_to_return; - Mock.fwk_interrupt_init_IgnoreBool = (char)1; -} - -void fwk_interrupt_init_CMockStopIgnore(void) -{ - if(Mock.fwk_interrupt_init_IgnoreBool) - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_interrupt_init_CallInstance); - Mock.fwk_interrupt_init_IgnoreBool = (char)0; + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)1; } -void fwk_interrupt_init_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) +void fwk_arch_interrupt_init_CMockStopIgnore(void) { - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_interrupt_init_CALL_INSTANCE)); - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); - UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); - memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_interrupt_init_CallInstance, cmock_guts_index); - Mock.fwk_interrupt_init_IgnoreBool = (char)0; - cmock_call_instance->LineNumber = cmock_line; - cmock_call_instance->ExpectAnyArgsBool = (char)0; - cmock_call_instance->ReturnVal = cmock_to_return; - cmock_call_instance->ExpectAnyArgsBool = (char)1; + if(Mock.fwk_arch_interrupt_init_IgnoreBool) + Mock.fwk_arch_interrupt_init_CallInstance = CMock_Guts_MemNext(Mock.fwk_arch_interrupt_init_CallInstance); + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)0; } -void fwk_interrupt_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_interrupt_driver* driver, int cmock_to_return) +void fwk_arch_interrupt_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return) { - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_interrupt_init_CALL_INSTANCE)); - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); + CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE)); + CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_arch_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_interrupt_init_CallInstance, cmock_guts_index); - Mock.fwk_interrupt_init_IgnoreBool = (char)0; + Mock.fwk_arch_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_arch_interrupt_init_CallInstance, cmock_guts_index); + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)0; cmock_call_instance->LineNumber = cmock_line; cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_fwk_interrupt_init(cmock_call_instance, driver, 1); cmock_call_instance->ReturnVal = cmock_to_return; } -void fwk_interrupt_init_AddCallback(CMOCK_fwk_interrupt_init_CALLBACK Callback) -{ - Mock.fwk_interrupt_init_IgnoreBool = (char)0; - Mock.fwk_interrupt_init_CallbackBool = (char)1; - Mock.fwk_interrupt_init_CallbackFunctionPointer = Callback; -} - -void fwk_interrupt_init_Stub(CMOCK_fwk_interrupt_init_CALLBACK Callback) +void fwk_arch_interrupt_init_AddCallback(CMOCK_fwk_arch_interrupt_init_CALLBACK Callback) { - Mock.fwk_interrupt_init_IgnoreBool = (char)0; - Mock.fwk_interrupt_init_CallbackBool = (char)0; - Mock.fwk_interrupt_init_CallbackFunctionPointer = Callback; + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)0; + Mock.fwk_arch_interrupt_init_CallbackBool = (char)1; + Mock.fwk_arch_interrupt_init_CallbackFunctionPointer = Callback; } -void fwk_interrupt_init_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_interrupt_driver* driver, int driver_Depth, int cmock_to_return) +void fwk_arch_interrupt_init_Stub(CMOCK_fwk_arch_interrupt_init_CALLBACK Callback) { - CMOCK_MEM_INDEX_TYPE cmock_guts_index = CMock_Guts_MemNew(sizeof(CMOCK_fwk_interrupt_init_CALL_INSTANCE)); - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(cmock_guts_index); - UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringOutOfMemory); - memset(cmock_call_instance, 0, sizeof(*cmock_call_instance)); - Mock.fwk_interrupt_init_CallInstance = CMock_Guts_MemChain(Mock.fwk_interrupt_init_CallInstance, cmock_guts_index); - Mock.fwk_interrupt_init_IgnoreBool = (char)0; - cmock_call_instance->LineNumber = cmock_line; - cmock_call_instance->ExpectAnyArgsBool = (char)0; - CMockExpectParameters_fwk_interrupt_init(cmock_call_instance, driver, driver_Depth); - cmock_call_instance->ReturnVal = cmock_to_return; -} - -void fwk_interrupt_init_CMockIgnoreArg_driver(UNITY_LINE_TYPE cmock_line) -{ - CMOCK_fwk_interrupt_init_CALL_INSTANCE* cmock_call_instance = (CMOCK_fwk_interrupt_init_CALL_INSTANCE*)CMock_Guts_GetAddressFor(CMock_Guts_MemEndOfChain(Mock.fwk_interrupt_init_CallInstance)); - UNITY_TEST_ASSERT_NOT_NULL(cmock_call_instance, cmock_line, CMockStringIgnPreExp); - cmock_call_instance->IgnoreArg_driver = 1; + Mock.fwk_arch_interrupt_init_IgnoreBool = (char)0; + Mock.fwk_arch_interrupt_init_CallbackBool = (char)0; + Mock.fwk_arch_interrupt_init_CallbackFunctionPointer = Callback; } int fwk_interrupt_is_enabled(unsigned int interrupt, bool* enabled) diff --git a/unit_test/unity_mocks/mocks/Mockfwk_interrupt.h b/unit_test/unity_mocks/mocks/Mockfwk_interrupt.h index 1d37626d3..0e7ce7ffb 100644 --- a/unit_test/unity_mocks/mocks/Mockfwk_interrupt.h +++ b/unit_test/unity_mocks/mocks/Mockfwk_interrupt.h @@ -26,22 +26,16 @@ typedef void(*cmock_fwk_interrupt_func_ptr1)(void); typedef void(*cmock_fwk_interrupt_func_ptr2)(uintptr_t param); -#define fwk_interrupt_init_IgnoreAndReturn(cmock_retval) fwk_interrupt_init_CMockIgnoreAndReturn(__LINE__, cmock_retval) -void fwk_interrupt_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); -#define fwk_interrupt_init_StopIgnore() fwk_interrupt_init_CMockStopIgnore() -void fwk_interrupt_init_CMockStopIgnore(void); -#define fwk_interrupt_init_ExpectAnyArgsAndReturn(cmock_retval) fwk_interrupt_init_CMockExpectAnyArgsAndReturn(__LINE__, cmock_retval) -void fwk_interrupt_init_CMockExpectAnyArgsAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); -#define fwk_interrupt_init_ExpectAndReturn(driver, cmock_retval) fwk_interrupt_init_CMockExpectAndReturn(__LINE__, driver, cmock_retval) -void fwk_interrupt_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_interrupt_driver* driver, int cmock_to_return); -typedef int (* CMOCK_fwk_interrupt_init_CALLBACK)(const struct fwk_arch_interrupt_driver* driver, int cmock_num_calls); -void fwk_interrupt_init_AddCallback(CMOCK_fwk_interrupt_init_CALLBACK Callback); -void fwk_interrupt_init_Stub(CMOCK_fwk_interrupt_init_CALLBACK Callback); -#define fwk_interrupt_init_StubWithCallback fwk_interrupt_init_Stub -#define fwk_interrupt_init_ExpectWithArrayAndReturn(driver, driver_Depth, cmock_retval) fwk_interrupt_init_CMockExpectWithArrayAndReturn(__LINE__, driver, driver_Depth, cmock_retval) -void fwk_interrupt_init_CMockExpectWithArrayAndReturn(UNITY_LINE_TYPE cmock_line, const struct fwk_arch_interrupt_driver* driver, int driver_Depth, int cmock_to_return); -#define fwk_interrupt_init_IgnoreArg_driver() fwk_interrupt_init_CMockIgnoreArg_driver(__LINE__) -void fwk_interrupt_init_CMockIgnoreArg_driver(UNITY_LINE_TYPE cmock_line); +#define fwk_arch_interrupt_init_IgnoreAndReturn(cmock_retval) fwk_arch_interrupt_init_CMockIgnoreAndReturn(__LINE__, cmock_retval) +void fwk_arch_interrupt_init_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +#define fwk_arch_interrupt_init_StopIgnore() fwk_arch_interrupt_init_CMockStopIgnore() +void fwk_arch_interrupt_init_CMockStopIgnore(void); +#define fwk_arch_interrupt_init_ExpectAndReturn(cmock_retval) fwk_arch_interrupt_init_CMockExpectAndReturn(__LINE__, cmock_retval) +void fwk_arch_interrupt_init_CMockExpectAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); +typedef int (* CMOCK_fwk_arch_interrupt_init_CALLBACK)(int cmock_num_calls); +void fwk_arch_interrupt_init_AddCallback(CMOCK_fwk_arch_interrupt_init_CALLBACK Callback); +void fwk_arch_interrupt_init_Stub(CMOCK_fwk_arch_interrupt_init_CALLBACK Callback); +#define fwk_arch_interrupt_init_StubWithCallback fwk_arch_interrupt_init_Stub #define fwk_interrupt_is_enabled_IgnoreAndReturn(cmock_retval) fwk_interrupt_is_enabled_CMockIgnoreAndReturn(__LINE__, cmock_retval) void fwk_interrupt_is_enabled_CMockIgnoreAndReturn(UNITY_LINE_TYPE cmock_line, int cmock_to_return); #define fwk_interrupt_is_enabled_StopIgnore() fwk_interrupt_is_enabled_CMockStopIgnore() -- GitLab From d5607540412beea40bd529e5bba28e2edaaea068 Mon Sep 17 00:00:00 2001 From: Emma Ballantyne Date: Tue, 25 Feb 2025 15:14:46 +0000 Subject: [PATCH 4/5] arch/fwk: Add product test support This minor patch updates the cmake files for product tests to allow them to work with the updated interrupt system. Signed-off-by: Emma Ballantyne Signed-off-by: James Chesterman --- product/test/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/product/test/CMakeLists.txt b/product/test/CMakeLists.txt index e545491f7..1365f8149 100644 --- a/product/test/CMakeLists.txt +++ b/product/test/CMakeLists.txt @@ -67,6 +67,10 @@ set(FWK_MOCKS_SRC_ROOT ${SCP_ROOT}/unit_test/unity_mocks/mocks) set(TEST_ON_HOST TRUE) +# Architecture sources +set(ARCH_ROOT ${SCP_ROOT}/arch/none/host) +set(ARCH_SRC_ROOT ${ARCH_ROOT}/src) + # Common flags list(APPEND EXTRA_COMPILE_FLAGS -g3) list(APPEND EXTRA_COMPILE_FLAGS -Wall) @@ -104,6 +108,7 @@ list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_status.c) list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_string.c) list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_delayed_resp.c) list(APPEND FWK_SRC ${FWK_SRC_ROOT}/fwk_time.c) +list(APPEND FWK_SRC ${ARCH_ROOT}/src/arch_interrupt.c) list(APPEND FWK_SRC ${UNITY_SRC_ROOT}/unity.c) list(APPEND SCP_UNITY_SRC ${SCP_ROOT}/unit_test/unity_mocks/scp_unity.c) -- GitLab From 8cced9c0881d0944941cf3635bca1d29aad7983d Mon Sep 17 00:00:00 2001 From: Emma Ballantyne Date: Wed, 26 Feb 2025 14:56:37 +0000 Subject: [PATCH 5/5] arch: rename arch_helpers to arch_interrupt Rename arch_helpers.h to arch_interrupt.h, as well as adding a defintion of arch_interrupt_init to fwk_arch.h. Signed-off-by: Emma Ballantyne Signed-off-by: James Chesterman --- .../{arch_helpers.h => arch_interrupt.h} | 2 - arch/arm/aarch64/src/arch_gic.c | 2 +- arch/arm/aarch64/src/arch_main.c | 2 +- .../{arch_helpers.h => arch_interrupt.h} | 2 - arch/arm/arm-m/src/arch_main.c | 2 +- arch/arm/armv8-a/include/arch_gic.h | 2 +- .../{arch_helpers.h => arch_interrupt.h} | 12 +++--- arch/arm/armv8-a/src/arch_main.c | 4 +- arch/none/host/include/arch_helpers.h | 38 ------------------- arch/none/host/include/arch_interrupt.h | 33 ++++++++++------ .../{arch_helpers.h => arch_interrupt.h} | 1 - arch/none/optee/src/arch_interrupt.c | 2 +- arch/none/optee/src/arch_main.c | 2 +- framework/include/fwk_arch.h | 10 +++++ framework/include/fwk_interrupt.h | 2 +- framework/src/fwk_arch.c | 2 +- framework/src/fwk_interrupt.c | 2 +- framework/test/fwk_test.c | 4 +- .../{arch_helpers.h => arch_interrupt.h} | 0 module/armv8r_mpu/src/armv8r_mpu_reg.c | 4 +- .../rcar_arch_timer/src/mod_rcar_arch_timer.c | 6 +-- .../module/rcar_system/src/mod_rcar_system.c | 4 +- .../rcar/module/rcar_system/src/rcar_pwc.c | 4 +- .../{arch_helpers.h => arch_interrupt.h} | 0 unit_test/user_guide.md | 2 +- 25 files changed, 60 insertions(+), 84 deletions(-) rename arch/arm/aarch64/include/{arch_helpers.h => arch_interrupt.h} (97%) rename arch/arm/arm-m/include/{arch_helpers.h => arch_interrupt.h} (98%) rename arch/arm/armv8-a/include/{arch_helpers.h => arch_interrupt.h} (98%) delete mode 100644 arch/none/host/include/arch_helpers.h rename arch/none/optee/include/{arch_helpers.h => arch_interrupt.h} (97%) rename framework/test/include/{arch_helpers.h => arch_interrupt.h} (100%) rename unit_test/unity_mocks/{arch_helpers.h => arch_interrupt.h} (100%) diff --git a/arch/arm/aarch64/include/arch_helpers.h b/arch/arm/aarch64/include/arch_interrupt.h similarity index 97% rename from arch/arm/aarch64/include/arch_helpers.h rename to arch/arm/aarch64/include/arch_interrupt.h index e03e8f4f7..746dcd41a 100644 --- a/arch/arm/aarch64/include/arch_helpers.h +++ b/arch/arm/aarch64/include/arch_interrupt.h @@ -47,6 +47,4 @@ inline static void arch_suspend(void) __asm volatile("wfe"); } -int arch_interrupt_init(); - #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/aarch64/src/arch_gic.c b/arch/arm/aarch64/src/arch_gic.c index 89bfe3eb6..9e12cd4db 100644 --- a/arch/arm/aarch64/src/arch_gic.c +++ b/arch/arm/aarch64/src/arch_gic.c @@ -10,7 +10,7 @@ #include #include -#include +#include #include #include diff --git a/arch/arm/aarch64/src/arch_main.c b/arch/arm/aarch64/src/arch_main.c index a8a265411..22ff1ac1b 100644 --- a/arch/arm/aarch64/src/arch_main.c +++ b/arch/arm/aarch64/src/arch_main.c @@ -10,7 +10,7 @@ #include #include -#include +#include int arm_main(void) { diff --git a/arch/arm/arm-m/include/arch_helpers.h b/arch/arm/arm-m/include/arch_interrupt.h similarity index 98% rename from arch/arm/arm-m/include/arch_helpers.h rename to arch/arm/arm-m/include/arch_interrupt.h index 90435cee5..fbdd3bd46 100644 --- a/arch/arm/arm-m/include/arch_helpers.h +++ b/arch/arm/arm-m/include/arch_interrupt.h @@ -60,6 +60,4 @@ inline static void arch_suspend(void) __asm volatile("wfe"); } -int arch_interrupt_init(); - #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/arm-m/src/arch_main.c b/arch/arm/arm-m/src/arch_main.c index f19fa4ca3..2e5f4a32c 100644 --- a/arch/arm/arm-m/src/arch_main.c +++ b/arch/arm/arm-m/src/arch_main.c @@ -18,7 +18,7 @@ /* * This variable is used to ensure spurious nested calls won't * enable interrupts. This is been accessed from inline function defined in - * arch_helpers.h + * arch_interrupt.h */ unsigned int critical_section_nest_level; diff --git a/arch/arm/armv8-a/include/arch_gic.h b/arch/arm/armv8-a/include/arch_gic.h index c0fc841c4..2f77d9317 100644 --- a/arch/arm/armv8-a/include/arch_gic.h +++ b/arch/arm/armv8-a/include/arch_gic.h @@ -11,7 +11,7 @@ #include -#include +#include /* Constants to categorise priorities */ #define GIC_HIGHEST_SEC_PRIORITY 0x0 diff --git a/arch/arm/armv8-a/include/arch_helpers.h b/arch/arm/armv8-a/include/arch_interrupt.h similarity index 98% rename from arch/arm/armv8-a/include/arch_helpers.h rename to arch/arm/armv8-a/include/arch_interrupt.h index 049b3cc31..bdc1c89bb 100644 --- a/arch/arm/armv8-a/include/arch_helpers.h +++ b/arch/arm/armv8-a/include/arch_interrupt.h @@ -430,10 +430,10 @@ DEFINE_SYSREG_RW_FUNCS(cnthctl_el2) (((x) >> CNTP_CTL_ISTATUS_SHIFT) & CNTP_CTL_ISTATUS_MASK) #define set_cntp_ctl_enable(x) ((x) |= (U(1) << CNTP_CTL_ENABLE_SHIFT)) -#define set_cntp_ctl_imask(x) ((x) |= (U(1) << CNTP_CTL_IMASK_SHIFT)) +#define set_cntp_ctl_imask(x) ((x) |= (U(1) << CNTP_CTL_IMASK_SHIFT)) #define clr_cntp_ctl_enable(x) ((x) &= ~(U(1) << CNTP_CTL_ENABLE_SHIFT)) -#define clr_cntp_ctl_imask(x) ((x) &= ~(U(1) << CNTP_CTL_IMASK_SHIFT)) +#define clr_cntp_ctl_imask(x) ((x) &= ~(U(1) << CNTP_CTL_IMASK_SHIFT)) DEFINE_SYSREG_RW_FUNCS(tpidr_el3) @@ -540,13 +540,13 @@ static inline uint64_t el_implemented(unsigned int el) #define read_mpidr() read_mpidr_el1() -#define read_scr() read_scr_el3() +#define read_scr() read_scr_el3() #define write_scr(_v) write_scr_el3(_v) -#define read_hcr() read_hcr_el2() +#define read_hcr() read_hcr_el2() #define write_hcr(_v) write_hcr_el2(_v) -#define read_cpacr() read_cpacr_el1() +#define read_cpacr() read_cpacr_el1() #define write_cpacr(_v) write_cpacr_el1(_v) /* @@ -599,6 +599,4 @@ inline static void arch_suspend(void) wfe(); } -int arch_interrupt_init(); - #endif /* ARCH_HELPERS_H */ diff --git a/arch/arm/armv8-a/src/arch_main.c b/arch/arm/armv8-a/src/arch_main.c index bf872ff9e..1df757d7e 100644 --- a/arch/arm/armv8-a/src/arch_main.c +++ b/arch/arm/armv8-a/src/arch_main.c @@ -12,14 +12,14 @@ #include #include -#include +#include #include /* * This variable is used to ensure spurious nested calls won't * enable interrupts. This is been accessed from inline function defined in - * arch_helpers.h + * arch_interrupt.h */ unsigned int critical_section_nest_level; diff --git a/arch/none/host/include/arch_helpers.h b/arch/none/host/include/arch_helpers.h deleted file mode 100644 index aa65c7ea6..000000000 --- a/arch/none/host/include/arch_helpers.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Arm SCP/MCP Software - * Copyright (c) 2022-2025, Arm Limited and Contributors. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - */ - -#ifndef ARCH_HELPERS_H -#define ARCH_HELPERS_H - -/*! - * \brief Enables global CPU interrupts. (stub) - * - */ -inline static void arch_interrupts_enable(unsigned int not_used) -{ -} - -/*! - * \brief Disables global CPU interrupts. (stub) - * - */ -inline static unsigned int arch_interrupts_disable(void) -{ - return 0; -} - -/*! - * \brief Suspend execution of current CPU. - * - */ -inline static void arch_suspend(void) -{ -} - -int arch_interrupt_init(); - -#endif /* ARCH_HELPERS_H */ diff --git a/arch/none/host/include/arch_interrupt.h b/arch/none/host/include/arch_interrupt.h index 32872d26a..f8249793b 100644 --- a/arch/none/host/include/arch_interrupt.h +++ b/arch/none/host/include/arch_interrupt.h @@ -5,21 +5,32 @@ * SPDX-License-Identifier: BSD-3-Clause */ -#ifndef ARCH_INTERRUPT_H -#define ARCH_INTERRUPT_H - -#include +#ifndef ARCH_HELPERS_H +#define ARCH_HELPERS_H /*! - * \brief Initialize the architecture interrupt management component. + * \brief Enables global CPU interrupts. (stub) * - * \param[out] Pointer to the interrupt driver. + */ +inline static void arch_interrupts_enable(unsigned int not_used) +{ +} + +/*! + * \brief Disables global CPU interrupts. (stub) * - * \retval ::FWK_E_PANIC The operation failed. - * \retval ::FWK_SUCCESS The operation succeeded. + */ +inline static unsigned int arch_interrupts_disable(void) +{ + return 0; +} + +/*! + * \brief Suspend execution of current CPU. * - * \return Status code representing the result of the operation. */ -int arch_interrupt_init(); +inline static void arch_suspend(void) +{ +} -#endif /* ARCH_INTERRUPT_H */ +#endif /* ARCH_HELPERS_H */ diff --git a/arch/none/optee/include/arch_helpers.h b/arch/none/optee/include/arch_interrupt.h similarity index 97% rename from arch/none/optee/include/arch_helpers.h rename to arch/none/optee/include/arch_interrupt.h index 47b377228..5d430204b 100644 --- a/arch/none/optee/include/arch_helpers.h +++ b/arch/none/optee/include/arch_interrupt.h @@ -44,6 +44,5 @@ inline static void arch_suspend(void) * * \return Status code representing the result of the operation. */ -int arch_interrupt_init(); #endif /* ARCH_HELPERS_H */ diff --git a/arch/none/optee/src/arch_interrupt.c b/arch/none/optee/src/arch_interrupt.c index 0a35d69e6..4fa0404c7 100644 --- a/arch/none/optee/src/arch_interrupt.c +++ b/arch/none/optee/src/arch_interrupt.c @@ -11,7 +11,7 @@ #include #include -#include +#include #include #include diff --git a/arch/none/optee/src/arch_main.c b/arch/none/optee/src/arch_main.c index dff9a23e7..7d3e034c0 100644 --- a/arch/none/optee/src/arch_main.c +++ b/arch/none/optee/src/arch_main.c @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include diff --git a/framework/include/fwk_arch.h b/framework/include/fwk_arch.h index c0dd0c342..152255172 100644 --- a/framework/include/fwk_arch.h +++ b/framework/include/fwk_arch.h @@ -25,6 +25,16 @@ * \{ */ +/*! + * \brief Initialize the architecture interrupt management component. + * + * \retval ::FWK_E_PANIC The operation failed. + * \retval ::FWK_SUCCESS The operation succeeded. + * + * \return Status code representing the result of the operation. + */ +int arch_interrupt_init(void); + /*! * \brief Enable interrupts. * diff --git a/framework/include/fwk_interrupt.h b/framework/include/fwk_interrupt.h index 15f9e72ab..0c47c8aa8 100644 --- a/framework/include/fwk_interrupt.h +++ b/framework/include/fwk_interrupt.h @@ -15,7 +15,7 @@ #include #include -#include +#include #include #include diff --git a/framework/src/fwk_arch.c b/framework/src/fwk_arch.c index f40b497e4..a30c2107c 100644 --- a/framework/src/fwk_arch.c +++ b/framework/src/fwk_arch.c @@ -12,7 +12,7 @@ #include #include -#include +#include #if FWK_HAS_INCLUDE() # include diff --git a/framework/src/fwk_interrupt.c b/framework/src/fwk_interrupt.c index 10c02f177..eee73352a 100644 --- a/framework/src/fwk_interrupt.c +++ b/framework/src/fwk_interrupt.c @@ -14,7 +14,7 @@ #include #include -#include +#include int fwk_arch_interrupt_init() { diff --git a/framework/test/fwk_test.c b/framework/test/fwk_test.c index cd3eb3bf0..2cb15a086 100644 --- a/framework/test/fwk_test.c +++ b/framework/test/fwk_test.c @@ -1,6 +1,6 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2015-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -18,7 +18,7 @@ /* * This variable is used by arm architecture to ensure spurious nested calls * won't enable interrupts. This is been accessed from inline function defined - * in arch_helpers.h + * in arch_interrupt.h */ unsigned int critical_section_nest_level; diff --git a/framework/test/include/arch_helpers.h b/framework/test/include/arch_interrupt.h similarity index 100% rename from framework/test/include/arch_helpers.h rename to framework/test/include/arch_interrupt.h diff --git a/module/armv8r_mpu/src/armv8r_mpu_reg.c b/module/armv8r_mpu/src/armv8r_mpu_reg.c index 0e45448a1..ab9623883 100644 --- a/module/armv8r_mpu/src/armv8r_mpu_reg.c +++ b/module/armv8r_mpu/src/armv8r_mpu_reg.c @@ -1,13 +1,13 @@ /* * Arm SCP/MCP Software - * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved. + * Copyright (c) 2024-2025, Arm Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include -#include +#include #include uint64_t read_mair_el2(void) diff --git a/product/rcar/module/rcar_arch_timer/src/mod_rcar_arch_timer.c b/product/rcar/module/rcar_arch_timer/src/mod_rcar_arch_timer.c index ad3d687cb..c532803b7 100644 --- a/product/rcar/module/rcar_arch_timer/src/mod_rcar_arch_timer.c +++ b/product/rcar/module/rcar_arch_timer/src/mod_rcar_arch_timer.c @@ -1,13 +1,11 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2021, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause */ -#include - #include #include #include @@ -22,6 +20,8 @@ #include #include +#include + #include #include diff --git a/product/rcar/module/rcar_system/src/mod_rcar_system.c b/product/rcar/module/rcar_system/src/mod_rcar_system.c index 4ed854134..708631016 100644 --- a/product/rcar/module/rcar_system/src/mod_rcar_system.c +++ b/product/rcar/module/rcar_system/src/mod_rcar_system.c @@ -1,6 +1,6 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2024, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -33,7 +33,7 @@ #include #include -#include +#include #include /* Device context */ diff --git a/product/rcar/module/rcar_system/src/rcar_pwc.c b/product/rcar/module/rcar_system/src/rcar_pwc.c index ced94605d..5880aafcb 100644 --- a/product/rcar/module/rcar_system/src/rcar_pwc.c +++ b/product/rcar/module/rcar_system/src/rcar_pwc.c @@ -1,6 +1,6 @@ /* * Renesas SCP/MCP Software - * Copyright (c) 2020-2024, Renesas Electronics Corporation. All rights + * Copyright (c) 2020-2025, Renesas Electronics Corporation. All rights * reserved. * * SPDX-License-Identifier: BSD-3-Clause @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include diff --git a/unit_test/unity_mocks/arch_helpers.h b/unit_test/unity_mocks/arch_interrupt.h similarity index 100% rename from unit_test/unity_mocks/arch_helpers.h rename to unit_test/unity_mocks/arch_interrupt.h diff --git a/unit_test/user_guide.md b/unit_test/user_guide.md index ae6ea513b..413413942 100644 --- a/unit_test/user_guide.md +++ b/unit_test/user_guide.md @@ -58,7 +58,7 @@ unit_test ├── cfg.yml ├── CMakeLists.txt ├── unity_mocks - │ ├── arch_helpers.h + │ ├── arch_interrupt.h │ └── mocks ├── utils │ └── zip_coverage_report.sh -- GitLab