diff options
Diffstat (limited to 'pk/std')
-rw-r--r-- | pk/std/Makefile | 50 | ||||
-rw-r--r-- | pk/std/pk_port.h | 17 | ||||
-rw-r--r-- | pk/std/pkstdfiles.mk | 33 | ||||
-rw-r--r-- | pk/std/std.h | 20 | ||||
-rw-r--r-- | pk/std/std_common.h | 54 | ||||
-rw-r--r-- | pk/std/std_init.c | 50 | ||||
-rw-r--r-- | pk/std/std_irq.h | 86 | ||||
-rw-r--r-- | pk/std/std_irq_config.h | 143 | ||||
-rw-r--r-- | pk/std/std_irq_init.c | 105 | ||||
-rw-r--r-- | pk/std/std_register_addresses.h | 49 | ||||
-rw-r--r-- | pk/std/std_timebase.h | 42 |
11 files changed, 0 insertions, 649 deletions
diff --git a/pk/std/Makefile b/pk/std/Makefile deleted file mode 100644 index 4101935d..00000000 --- a/pk/std/Makefile +++ /dev/null @@ -1,50 +0,0 @@ -# This Makefile compiles all of the PK code required for the STD (standard PPE) port -# of PK. See the "pk.mk" file in this directory. - -#all generated files from this makefile will end up in obj/$(IMAGE_NAME)/pk -export SUB_OBJDIR = /pk - -include img_defs.mk -include pkstdfiles.mk - -ifeq "$(PK_TIMER_SUPPORT)" "1" -STD_OBJECTS += ${STD-TIMER-C-SOURCES:.c=.o} ${STD-TIMER-S-SOURCES:.S=.o} -endif - -ifeq "$(PK_THREAD_SUPPORT)" "1" -STD_OBJECTS += ${STD-THREAD-C-SOURCES:.c=.o} ${STD-THREAD-S-SOURCES:.S=.o} -endif - -ifeq "$(STD_ASYNC_SUPPORT)" "1" -STD_OBJECTS += ${STD-ASYNC-C-SOURCES:.c=.o} ${STD-ASYNC-S-SOURCES:.S=.o} -endif - -OBJS := $(addprefix $(OBJDIR)/, $(STD_OBJECTS)) - -libpk.a: kernel ppe42 trace std - $(AR) crs $(OBJDIR)/libpk.a $(OBJDIR)/*.o - -.PHONY: clean std kernel ppe42 trace -std: $(OBJS) - -trace: - $(MAKE) -I $(IMAGE_SRCDIR) -C ../trace - -kernel: - $(MAKE) -I $(IMAGE_SRCDIR) -C ../kernel - -ppe42: - $(MAKE) -I $(IMAGE_SRCDIR) -C ../ppe42 - - -$(OBJS) $(OBJS:.o=.d): | $(OBJDIR) - -$(OBJDIR): - mkdir -p $(OBJDIR) - -clean: - rm -fr $(OBJDIR) - -ifneq ($(MAKECMDGOALS),clean) -include $(OBJS:.o=.d) -endif diff --git a/pk/std/pk_port.h b/pk/std/pk_port.h deleted file mode 100644 index 4d400cc5..00000000 --- a/pk/std/pk_port.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef __PK_PORT_H__ -#define __PK_PORT_H__ -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2014 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file pk_port.h -/// \brief The top-level standard PPE environment header for PK. - -#define HWMACRO_STD - -#include "ppe42.h" -#include "std_timebase.h" - -#endif /* __PK_PORT_H__ */ diff --git a/pk/std/pkstdfiles.mk b/pk/std/pkstdfiles.mk deleted file mode 100644 index 7133bd47..00000000 --- a/pk/std/pkstdfiles.mk +++ /dev/null @@ -1,33 +0,0 @@ -# @file pkstdfiles.mk -# -# @brief mk for including std object files -# -# @page ChangeLogs Change Logs -# @section pkstdfiles.mk -# @verbatim -# -# -# Change Log ****************************************************************** -# Flag Defect/Feature User Date Description -# ------ -------------- ---------- ------------ ----------- -# -# @endverbatim -# -########################################################################## -# Object Files -########################################################################## - -STD-C-SOURCES = std_init.c std_irq_init.c -STD-S-SOURCES = - -STD-TIMER-C-SOURCES = -STD-TIMER-S-SOURCES = - -STD-THREAD-C-SOURCES = -STD-THREAD-S-SOURCES = - -STD-ASYNC-C-SOURCES = -STD-ASYNC-S-SOURCES = - -STD_OBJECTS += $(STD-C-SOURCES:.c=.o) $(STD-S-SOURCES:.S=.o) - diff --git a/pk/std/std.h b/pk/std/std.h deleted file mode 100644 index c4e9dda6..00000000 --- a/pk/std/std.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __STD_H__ -#define __STD_H__ -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2014 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file pgp.h -/// \brief The STD environment for PK. - -#ifndef HWMACRO_STD -#define HWMACRO_STD -#include "ppe42.h" -#endif - -#include "std_register_addresses.h" -#include "std_common.h" - -#endif /* __STD_H__ */ diff --git a/pk/std/std_common.h b/pk/std/std_common.h deleted file mode 100644 index 38bc1621..00000000 --- a/pk/std/std_common.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef __STD_COMMON_H__ -#define __STD_COMMON_H__ - -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2014 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file cme_common.h -/// \brief Common header for standard PPE's -/// - -#ifndef __ASSEMBLER__ -#include <stdint.h> -#endif - -//#include "cmehw_interrupts.h" -#include "pk.h" -#include "std_irq_config.h" - -#ifdef __ASSEMBLER__ -/// This macro contains standard PPE code for determining what IRQ caused the -/// external exception handler to be invoked by the PPE - -/// Check for interrupts pending in the interrupt status register while the IRQ -/// is computed. The IRQ is expected to be stored in r4. If no IRQ is -/// pending then load the phantom irq # (EXTERNAL_IRQS). -/// -/// r1, r2, r3, and r13 must not be modified. All other registers may be used. -/// - .macro hwmacro_get_ext_irq - - _lvdg d5, STD_LCL_EISTR #load the 64bit interrupt status into d5 - cntlzw r4, r5 - cmpwible r4, 31, call_external_irq_handler #branch if irq is lt or eq to 31 - - ## No IRQ pending in r5. Try r6. - ## Note: irq # will be 64 (phantom irq) if no bits were set in either register - - cntlzw r4, r6 - addi r4, r4, 32 - - .endm - -/// Redirect the .hwmacro_irq_cfg_bitmaps macro to call our standard PPE implementation -/// This is called from the ppe42_exceptions.S file. - .macro .hwmacro_irq_cfg_bitmaps - .std_irq_cfg_bitmaps - .endm - -#endif /* __ASSEMBLER__ */ - -#endif /* __STD_COMMON_H__ */ diff --git a/pk/std/std_init.c b/pk/std/std_init.c deleted file mode 100644 index b0aae325..00000000 --- a/pk/std/std_init.c +++ /dev/null @@ -1,50 +0,0 @@ -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2014 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file std_init.c -/// \brief PK initialization for a standard PPE. -/// -/// The entry points in this routine are used during initialization. This -/// code space can be deallocated and reassigned after application -/// initialization if required. - -#include "pk.h" - -/// Standard PPE environment initial setup. -/// -/// This is setup common to all standard PPE Macro applications. This setup takes place -/// during boot, before main() is called. - -void -__hwmacro_setup(void) -{ - //mask all interrupts - out64(STD_LCL_EIMR_OR, 0xffffffffffffffffull); - - //Set all interrupts to active low, level sensitive by default - out64(STD_LCL_EIPR_CLR, 0xffffffffffffffffull); - out64(STD_LCL_EITR_CLR, 0xffffffffffffffffull); - - //set up the configured type - out64(STD_LCL_EITR_OR, g_ext_irqs_type); - - //set up the configured polarity - out64(STD_LCL_EIPR_OR, g_ext_irqs_polarity); - - //clear the status of all active-high interrupts (has no affect on - //level sensitive interrupts) - out64(STD_LCL_EISR_CLR, g_ext_irqs_polarity); - - //clear the status of all active-low interrupts (has no affect on - //level sensitive interrupts) - out64(STD_LCL_EISR_OR, ~g_ext_irqs_polarity); - - //unmask the interrupts that are to be enabled by default - out64(STD_LCL_EIMR_CLR, g_ext_irqs_enable); - - //wait for the last operation to complete - sync(); -} diff --git a/pk/std/std_irq.h b/pk/std/std_irq.h deleted file mode 100644 index 3920997e..00000000 --- a/pk/std/std_irq.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef __STD_IRQ_H__ -#define __STD_IRQ_H__ - -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2014 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file occhw_irq.h -/// \brief Standard PPE Externnal Interrupt handling for PK -/// -/// The standard PPE interrupt controller supports a maximum of 64 interrupts with -/// simple OR combining of the interrupt signals. -/// -/// The standard PPE interrupt controller allows interrupt status to be set directly by -/// software. It contains a 'mask' register, unlike most 405 interrupt -/// controllers that have an 'enable' register. The standard PPE mask and status -/// registers also have atomic CLR/OR function so that it is never necessary -/// to enter a critical section to enable/disable/clear interrupts and -/// interrupt status. - -#include "std_common.h" -#include "std_register_addresses.h" -#include "ppe42.h" - -#ifndef __ASSEMBLER__ - -/// Enable an interrupt by clearing the mask bit. - -UNLESS__PPE42_IRQ_CORE_C__(extern) -inline void -pk_irq_enable(PkIrqId irq) -{ - out64(STD_LCL_EIMR_CLR, STD_IRQ_MASK64(irq)); -} - - -/// Disable an interrupt by setting the mask bit. - -UNLESS__PPE42_IRQ_CORE_C__(extern) -inline void -pk_irq_disable(PkIrqId irq) -{ - out64(STD_LCL_EIMR_OR, STD_IRQ_MASK64(irq)); -} - - -/// Clear interrupt status with an CLR mask. Only meaningful for -/// edge-triggered interrupts. - -UNLESS__PPE42_IRQ_CORE_C__(extern) -inline void -pk_irq_status_clear(PkIrqId irq) -{ - out64(STD_LCL_EISR_CLR, STD_IRQ_MASK64(irq)); -} - - -/// Get IRQ status as a 0 or non-0 integer - -UNLESS__PPE42_IRQ_CORE_C__(extern) -inline int -pk_irq_status_get(PkIrqId irq) -{ - return (in64(STD_LCL_EISR) & STD_IRQ_MASK64(irq)) != 0; -} - - -/// Set or clear interrupt status explicitly. - -UNLESS__PPE42_IRQ_CORE_C__(extern) -inline void -pk_irq_status_set(PkIrqId irq, int value) -{ - if (value) { - out64(STD_LCL_EISR_OR, STD_IRQ_MASK64(irq)); - } else { - out64(STD_LCL_EISR_CLR, STD_IRQ_MASK64(irq)); - } -} - - -#endif /* __ASSEMBLER__ */ - -#endif /* __STD_IRQ_H__ */ diff --git a/pk/std/std_irq_config.h b/pk/std/std_irq_config.h deleted file mode 100644 index 1c0326f1..00000000 --- a/pk/std/std_irq_config.h +++ /dev/null @@ -1,143 +0,0 @@ -#ifndef __STD_IRQ_CONFIG_H__ -#define __STD_IRQ_CONFIG_H__ -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2015 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file std_irq_config.h -/// \brief Contains data and macros pertaining to external interrupt -/// configuration for a standard PPE. -/// - -#include "pk_app_cfg.h" - -/// This constant is used to define the size of the table of interrupt handler -/// structures as well as a limit for error checking. -#define EXTERNAL_IRQS 64 - -// Standard interrupt type values (level or edge) -#define STD_IRQ_TYPE_LEVEL 0 -#define STD_IRQ_TYPE_EDGE 1 - -// Standard interrupt polarity values (high or low, rising falling) -#define STD_IRQ_POLARITY_LO 0 -#define STD_IRQ_POLARITY_FALLING 0 -#define STD_IRQ_POLARITY_HI 1 -#define STD_IRQ_POLARITY_RISING 1 - -// Standard interrupt mask values (masked or enabled) -#define STD_IRQ_MASKED 0 -#define STD_IRQ_ENABLED 1 - -// Fail to compile if the application does not define this -#ifndef APPCFG_EXT_IRQS_CONFIG -#error "APPCFG_EXT_IRQS_CONFIG must be defined in pk_app_cfg.h" -#endif - -// Fail to compile if the application does not define this -#ifndef APPCFG_IRQ_INVALID_MASK -#error "APPCFG_IRQ_INVALID_MASK must be defined in pk_app_cfg.h" -#endif - -#ifndef __ASSEMBLER__ - -/// This expression recognizes only those IRQ numbers that have named -/// (non-reserved) interrupts in the standard PPE interrupt controller. -#define STD_IRQ_VALID(irq) \ - ({unsigned __irq = (unsigned)(irq); \ - ((__irq < EXTERNAL_IRQS) && \ - ((STD_IRQ_MASK64(__irq) & \ - APPCFG_IRQ_INVALID_MASK) == 0));}) - -/// This is a 64-bit mask, with big-endian bit 'irq' set. -#define STD_IRQ_MASK64(irq) (0x8000000000000000ull >> (irq)) - -#else - -//Untyped assembler version of STD_IRQ_MASK64 -#define STD_IRQ_MASK64(irq) (0x8000000000000000 >> (irq)) - -#endif /* __ASSEMBLER__ */ - -#ifndef __ASSEMBLER__ -/// These globals are statically initialized elsewhere -extern uint64_t g_ext_irqs_type; -extern uint64_t g_ext_irqs_valid; -extern uint64_t g_ext_irqs_polarity; -extern uint64_t g_ext_irqs_enable; -#endif - -#ifdef __ASSEMBLER__ -/// These macros aid in the initialization of the external interrupt globals. I would -/// prefer to use CPP macros, but they don't support recursive macros which I use to -/// convert the variable number of interrupts that a processor can control into static -/// bitmaps used by __hwmacro_setup() at runtime. - - - //helper macro for setting up the irq configuration bitmaps for a standard PPE - .macro .std_irq_config irq_num=-1 irq_type=-1 irq_polarity=-1 irq_mask=-1 parms:vararg - .if (( \irq_num == -1 ) && ( \irq_type == -1 ) && ( \irq_polarity == -1 ) && ( \irq_mask == -1 )) -#.if ( .ext_irqs_defd != .ext_irqs_valid ) -#.error "###### .std_irq_config: Missing configuration for one or more interrupts ######" -#.endif - - .section .sdata - .align 3 - .global g_ext_irqs_type - .global g_ext_irqs_polarity - .global g_ext_irqs_enable - g_ext_irqs_polarity: - .quad .ext_irqs_polarity - g_ext_irqs_type: - .quad .ext_irqs_type - g_ext_irqs_enable: - .quad .ext_irqs_enable - .else - .if (( \irq_num < 0 ) || ( \irq_num > (EXTERNAL_IRQS - 1))) - .error "###### .std_irq_config: invalid irq number \irq_num ######" - .elseif ((.ext_irqs_valid & (1 << ( EXTERNAL_IRQS - 1 - \irq_num ))) == 0 ) - .error "###### .std_irq_config: Attempt to configure invalid irq number \irq_num ######" - .elseif (.ext_irqs_defd & (1 << ( EXTERNAL_IRQS - 1 - \irq_num ))) - .error "###### .std_irq_config: duplicate definition for irq \irq_num ######" - .else - .ext_irqs_defd = .ext_irqs_defd | (1 << ( EXTERNAL_IRQS - 1 - \irq_num )) - .endif - - .if (( \irq_type < 0 ) || ( \irq_type > 1 )) - .error "###### .std_irq_config: invalid/unspecified irq type \irq_type for irq \irq_num ######" - .else - .ext_irqs_type = .ext_irqs_type | ( \irq_type << ( EXTERNAL_IRQS - 1 - \irq_num )) - .endif - - .if (( \irq_polarity < 0 ) || ( \irq_polarity > 1 )) - .error "###### .std_irq_config: invalid/unspecified irq polarity ( \irq_polarity ) for irq \irq_num ######" - .else - .ext_irqs_polarity = .ext_irqs_polarity | ( \irq_polarity << ( EXTERNAL_IRQS - 1 - \irq_num )) - .endif - - .if (( \irq_mask < 0 ) || ( \irq_mask > 1 )) - .error "###### .std_irq_config: invalid/unspecified irq mask ( \irq_mask ) for irq \irq_num ######" - .else - .ext_irqs_enable = .ext_irqs_enable | ( \irq_mask << ( EXTERNAL_IRQS - 1 - \irq_num )) - .endif - - .std_irq_config \parms - .endif - .endm - - //Top level macro for generating interrupt configuration globals for a standard PPE - .macro .std_irq_cfg_bitmaps - .ext_irqs_valid = ~(APPCFG_IRQ_INVALID_MASK) - .ext_irqs_type = 0 - .ext_irqs_polarity = 0 - .ext_irqs_enable = 0 - .irq_mask = 0 - .ext_irqs_defd = 0 - .std_irq_config APPCFG_EXT_IRQS_CONFIG - .endm - -#endif /*__ASSEMBLER__*/ - -#endif /*__STD_IRQ_CONFIG_H__*/ diff --git a/pk/std/std_irq_init.c b/pk/std/std_irq_init.c deleted file mode 100644 index 80ae0f19..00000000 --- a/pk/std/std_irq_init.c +++ /dev/null @@ -1,105 +0,0 @@ -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2015 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file std_irq_init.c -/// \brief Standard PPE IRQ initialization code for PK -/// -/// The entry points in this file are initialization routines that could be -/// eliminated/deallocated by the application to free up storage if they are -/// no longer needed after initialization. - -#include "pk.h" - -/// Define the polarity and trigger condition for an interrupt. -/// -/// It is up to the application to take care of any side effects that may -/// occur from programming or reprogramming the interrupt controller. For -/// example, changing edge/level sensitivity or active level may set or clear -/// interrupt status in the controller. -/// -/// Note that PK allows this API to be called from any context, and changes -/// to the interrupt controller are made from a critical section. -/// -/// Return values other then PK_OK (0) are errors; see \ref pk_errors -/// -/// \retval 0 Successful completion -/// -/// \retval -PK_INVALID_ARGUMENT_IRQ_SETUP One or more arguments are invalid, -/// including an invalid \a irq, or invalid \a polarity or \a trigger parameters. - -int -pk_irq_setup(PkIrqId irq, - int polarity, - int trigger) -{ - PkMachineContext ctx; - - if (PK_ERROR_CHECK_API) { - PK_ERROR_IF(!STD_IRQ_VALID(irq) || - !((polarity == PK_IRQ_POLARITY_ACTIVE_HIGH) || - (polarity == PK_IRQ_POLARITY_ACTIVE_LOW)) || - !((trigger == PK_IRQ_TRIGGER_LEVEL_SENSITIVE) || - (trigger == PK_IRQ_TRIGGER_EDGE_SENSITIVE)), - PK_INVALID_ARGUMENT_IRQ_SETUP); - } - - pk_critical_section_enter(&ctx); - - if (polarity == PK_IRQ_POLARITY_ACTIVE_HIGH) { - out64(STD_LCL_EIPR_OR, STD_IRQ_MASK64(irq)); - } else { - out64(STD_LCL_EIPR_CLR, STD_IRQ_MASK64(irq)); - } - - if (trigger == PK_IRQ_TRIGGER_EDGE_SENSITIVE) { - out64(STD_LCL_EITR_OR, STD_IRQ_MASK64(irq)); - } else { - out64(STD_LCL_EITR_CLR, STD_IRQ_MASK64(irq)); - } - - pk_critical_section_exit(&ctx); - - return PK_OK; -} - - -/// (Re)define the IRQ handler and priority for an interrupt. -/// Return values other then PK_OK (0) are errors; see \ref pk_errors -/// -/// Note that PK allows this API to be called from any context, and changes -/// to the interrupt controller are made from a critical section. -/// -/// \retval 0 Successful completion -/// -/// \retval -PK_INVALID_ARGUMENT_IRQ_HANDLER One or more arguments are -/// invalid, including an invalid \a irq, a null (0) \a handler, -/// or invalid \a priority. - -int -pk_irq_handler_set(PkIrqId irq, - PkIrqHandler handler, - void *arg) -{ - PkMachineContext ctx; - - if (PK_ERROR_CHECK_API) { - PK_ERROR_IF(!STD_IRQ_VALID(irq) || - (handler == 0), - PK_INVALID_ARGUMENT_IRQ_HANDLER); - } - - pk_critical_section_enter(&ctx); - - __ppe42_irq_handlers[irq].handler = handler; - __ppe42_irq_handlers[irq].arg = arg; - - pk_critical_section_exit(&ctx); - - return PK_OK; -} - - - diff --git a/pk/std/std_register_addresses.h b/pk/std/std_register_addresses.h deleted file mode 100644 index 18153c7e..00000000 --- a/pk/std/std_register_addresses.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef __STD_REGISTER_ADDRESSES_H__ -#define __STD_REGISTER_ADDRESSES_H__ - -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2015 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file std_register_addresses.h -/// \brief Symbolic addresses for a standard PPE - -#include "pk.h" - -// Define the base address for the external interrupt controller registers -// This can be overridden in the pk_app_cfg.h file -#ifndef STD_EIC_BASE -#define STD_EIC_BASE 0xC0000000 -#endif - -// Define the base address for the PPE mode registers -// This can be overridden in the pk_app_cfg.h file -#ifndef STD_PMR_BASE -#define STD_PMR_BASE 0xC0000100 -#endif - -// Note: This list only contains registers that are needed by PK. If -// an application requires other registers, it should define them -// elsewhere (i.e., cme_register_addresses.h) -#define STD_LCL_EISR (STD_EIC_BASE + 0x0000) -#define STD_LCL_EISR_OR (STD_EIC_BASE + 0x0010) -#define STD_LCL_EISR_CLR (STD_EIC_BASE + 0x0018) -#define STD_LCL_EIMR (STD_EIC_BASE + 0x0020) -#define STD_LCL_EIMR_OR (STD_EIC_BASE + 0x0030) -#define STD_LCL_EIMR_CLR (STD_EIC_BASE + 0x0038) -#define STD_LCL_EIPR (STD_EIC_BASE + 0x0040) -#define STD_LCL_EIPR_OR (STD_EIC_BASE + 0x0050) -#define STD_LCL_EIPR_CLR (STD_EIC_BASE + 0x0058) -#define STD_LCL_EITR (STD_EIC_BASE + 0x0060) -#define STD_LCL_EITR_OR (STD_EIC_BASE + 0x0070) -#define STD_LCL_EITR_CLR (STD_EIC_BASE + 0x0078) -#define STD_LCL_EISTR (STD_EIC_BASE + 0x0080) -#define STD_LCL_EINR (STD_EIC_BASE + 0x00a0) - -#define STD_LCL_TSEL (STD_PMR_BASE + 0x0000) -#define STD_LCL_TBR (STD_PMR_BASE + 0x0040) - -#endif // __STD_REGISTER_ADDRESSES_H__ - diff --git a/pk/std/std_timebase.h b/pk/std/std_timebase.h deleted file mode 100644 index 855320d5..00000000 --- a/pk/std/std_timebase.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef __STD_TIMEBASE_H__ -#define __STD_TIMEBASE_H__ - -//----------------------------------------------------------------------------- -// *! (C) Copyright International Business Machines Corp. 2015 -// *! All Rights Reserved -- Property of IBM -// *! *** IBM Confidential *** -//----------------------------------------------------------------------------- - -/// \file std_timebase.h -/// \brief support for using the standard PPE 32 bit timebase register -/// -/// Each standard PPE has it's own timebase register that runs at a constant -/// frequency. - -#include "pk.h" - -#ifndef __ASSEMBLER__ - -#ifndef APPCFG_USE_EXT_TIMEBASE -static inline -uint32_t pk_timebase32_get(void) -{ - return (uint32_t)((in64(STD_LCL_TBR)) >> 32); -} - -#else -//assembly function is defined in ppe42_timebase.S -uint32_t pk_timebase32_get(void); - -#endif /* APPCFG_USE_EXT_TIMEBASE */ - -#else - - .macro _pk_timebase32_get rT, rA - lis \rA, STD_LCL_TBR@ha - lvd \rT, STD_LCL_TBR@l(\rA) - .endm - -#endif /* __ASSEMBLER__ */ - -#endif /* __STD_TIMEBASE_H__ */ |