diff --git a/Makefile b/Makefile index 335b297..a19db51 100644 --- a/Makefile +++ b/Makefile @@ -32,8 +32,8 @@ ifneq ($(OS),Windows_NT) CFLAGS += -DARCH_PPC -std=gnu99 -fstack-protector-all -Wno-language-extension-token else ifeq ($(arch), $(filter $(arch), arm aarch64_be aarch64 arm64 armv8b armv8l armv7l armv6l)) SRC_DIR=src/arm/ - SOURCE += $(COMMON_SRC) $(SRC_DIR)midr.c $(SRC_DIR)uarch.c $(SRC_COMMON)soc.c $(SRC_DIR)soc.c $(SRC_DIR)udev.c $(SRC_DIR)freq.c - HEADERS += $(COMMON_HDR) $(SRC_DIR)midr.h $(SRC_DIR)uarch.h $(SRC_COMMON)soc.h $(SRC_DIR)soc.h $(SRC_DIR)udev.c $(SRC_DIR)freq.h $(SRC_DIR)socs.h + SOURCE += $(COMMON_SRC) $(SRC_DIR)midr.c $(SRC_DIR)uarch.c $(SRC_COMMON)soc.c $(SRC_DIR)soc.c $(SRC_DIR)udev.c + HEADERS += $(COMMON_HDR) $(SRC_DIR)midr.h $(SRC_DIR)uarch.h $(SRC_COMMON)soc.h $(SRC_DIR)soc.h $(SRC_DIR)udev.c $(SRC_DIR)socs.h CFLAGS += -DARCH_ARM -Wno-unused-parameter -std=c99 -fstack-protector-all os := $(shell uname -s) diff --git a/src/arm/freq.c b/src/arm/freq.c deleted file mode 100644 index c5214a1..0000000 --- a/src/arm/freq.c +++ /dev/null @@ -1,47 +0,0 @@ -#include - -#define INSERT_ASM_ONCE __asm volatile("nop"); -#define INSERT_ASM_10_TIMES \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - -#define INSERT_ASM_100_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES - -#define INSERT_ASM_1000_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - -void nop_function_arm(uint64_t iters) { - for (uint64_t i = 0; i < iters; i++) { - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - } -} diff --git a/src/arm/freq.h b/src/arm/freq.h deleted file mode 100644 index 660cbb4..0000000 --- a/src/arm/freq.h +++ /dev/null @@ -1,6 +0,0 @@ -#ifndef __FREQ__ -#define __FREQ__ - -void nop_function_arm(uint64_t iters); - -#endif diff --git a/src/common/freq.c b/src/common/freq.c index f98981f..1682e05 100644 --- a/src/common/freq.c +++ b/src/common/freq.c @@ -29,6 +29,51 @@ perf_event_open(struct perf_event_attr *hw_event, pid_t pid, return ret; } +#define INSERT_ASM_ONCE __asm volatile("nop"); +#define INSERT_ASM_10_TIMES \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + INSERT_ASM_ONCE \ + +#define INSERT_ASM_100_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES \ + INSERT_ASM_10_TIMES + +#define INSERT_ASM_1000_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + INSERT_ASM_100_TIMES \ + +void nop_function(uint64_t iters) { + for (uint64_t i = 0; i < iters; i++) { + INSERT_ASM_1000_TIMES + INSERT_ASM_1000_TIMES + INSERT_ASM_1000_TIMES + INSERT_ASM_1000_TIMES + } +} // Differences between x86 measure_frequency this measure_max_frequency: // - measure_frequency employs all cores simultaneously wherease @@ -52,15 +97,6 @@ int64_t measure_max_frequency(uint32_t core) { int fd; int pid = 0; - void (*nop_function)(uint64_t); - -#ifdef ARCH_X86 - nop_function = nop_function_x86; -#elif ARCH_ARM - // TODO - nop_function = nop_function_arm; -#endif - memset(&pe, 0, sizeof(struct perf_event_attr)); pe.type = PERF_TYPE_HARDWARE; pe.size = sizeof(struct perf_event_attr); diff --git a/src/x86/freq/freq.c b/src/x86/freq/freq.c index 22cf23f..517aeba 100644 --- a/src/x86/freq/freq.c +++ b/src/x86/freq/freq.c @@ -143,50 +143,4 @@ int64_t measure_frequency(struct cpuInfo* cpu) { printf("\r%*c", num_spaces, ' '); return freq_struct->freq; -} - -#define INSERT_ASM_ONCE __asm volatile("nop"); -#define INSERT_ASM_10_TIMES \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - INSERT_ASM_ONCE \ - -#define INSERT_ASM_100_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES \ - INSERT_ASM_10_TIMES - -#define INSERT_ASM_1000_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - INSERT_ASM_100_TIMES \ - -void nop_function_x86(uint64_t iters) { - for (uint64_t i = 0; i < iters; i++) { - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - INSERT_ASM_1000_TIMES - } } \ No newline at end of file