Add support for AArch32
gcc version 4.9.2 (Raspbian 4.9.2-10) Tested on Linux raspberrypi 4.4.6-v7+ #875 SMP Tue Apr 12 16:33:02 BST 2016 armv7l GNU/Linux CPUs may be little or big endian, detect with gcc flags, not the processor architecture Add a new flag $(PLATFORM)_uses_openssl which allows to disable the link with openssl lib. vlib/vlib/threads.c: startup.conf must: - specify the heapsize as we don't have hugepages on raspbian cpu { main-core 3 } heapsize 64M Corrects in various files the assumption uword == u64 and replaces 'u64' cast with 'pointer_to_uword' and 'uword_to_pointer' where appropriate. 256 CPUs may create an OOM when testing with small memory footprint ( heapsize 64M ), allows the number of VLIB_MAX_CPUS to be set in platforms/*.mk vppinfra/vppinfra/longjmp.S: ARM - copy r1 (1st parameter of the setjmp call) to r0 (return value) vppinfra/vppinfra/time.h: On ARMv7 in AArch32 mode, we can access to a 64bit register to retreive the cycles count. gcc on rpi only declare ARM_ARCH 6. Override this info, and check if it is possible to use 'mrrc'. /!\ the time function will NOT work without allowing the user mode access to the PMU. You may download the source of the kmod here: https://github.com/christophefontaine/arm_rdtsc Change-Id: I8142606436d9671a184133b935398427f08a8bd2 Signed-off-by: Christophe Fontaine <christophe.fontaine@qosmos.com>
This commit is contained in:
committed by
Dave Barach
parent
7a2a378d2d
commit
fef15b4bb8
@@ -6,14 +6,12 @@ vnet_configure_depend = \
|
||||
|
||||
vnet_CPPFLAGS = $(call installed_includes_fn, \
|
||||
vppinfra \
|
||||
openssl \
|
||||
svm \
|
||||
vlib \
|
||||
vlib-api)
|
||||
|
||||
vnet_LDFLAGS = $(call installed_libs_fn, \
|
||||
vppinfra \
|
||||
openssl \
|
||||
svm \
|
||||
vlib \
|
||||
vlib-api)
|
||||
@@ -25,6 +23,12 @@ endif
|
||||
# Platform dependent configure flags
|
||||
vnet_configure_args += $(vnet_configure_args_$(PLATFORM))
|
||||
|
||||
# include & link with openssl only if needed
|
||||
ifneq ($($(PLATFORM)_uses_openssl),no)
|
||||
vnet_CPPFLAGS += $(call installed_includes_fn, openssl)
|
||||
vnet_LDFLAGS += $(call installed_libs_fn, openssl)
|
||||
endif
|
||||
|
||||
ifneq ($($(PLATFORM)_uses_dpdk),no)
|
||||
ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
|
||||
vnet_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
|
||||
|
||||
@@ -18,7 +18,6 @@ vpp_configure_args += $(vpp_configure_args_$(PLATFORM))
|
||||
|
||||
vpp_CPPFLAGS = $(call installed_includes_fn, \
|
||||
vppinfra \
|
||||
openssl \
|
||||
svm \
|
||||
vlib \
|
||||
vlib-api \
|
||||
@@ -26,12 +25,17 @@ vpp_CPPFLAGS = $(call installed_includes_fn, \
|
||||
|
||||
vpp_LDFLAGS = $(call installed_libs_fn, \
|
||||
vppinfra \
|
||||
openssl \
|
||||
svm \
|
||||
vlib \
|
||||
vlib-api \
|
||||
vnet)
|
||||
|
||||
# include & link with openssl only if needed
|
||||
ifneq ($($(PLATFORM)_uses_openssl),no)
|
||||
vpp_CPPFLAGS += $(call installed_includes_fn, openssl)
|
||||
vpp_LDFLAGS += $(call installed_libs_fn, openssl)
|
||||
endif
|
||||
|
||||
ifneq ($($(PLATFORM)_uses_dpdk),no)
|
||||
ifeq ($($(PLATFORM)_uses_external_dpdk),yes)
|
||||
vpp_CPPFLAGS += -I$($(PLATFORM)_dpdk_inc_dir)
|
||||
|
||||
37
build-data/platforms/arm32.mk
Normal file
37
build-data/platforms/arm32.mk
Normal file
@@ -0,0 +1,37 @@
|
||||
# Copyright (c) 2016 Cisco and/or its affiliates.
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at:
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# vector packet processor
|
||||
arm32_arch = native
|
||||
arm32_native_tools = vppapigen
|
||||
|
||||
arm32_uses_dpdk = no
|
||||
arm32_uses_openssl = no
|
||||
|
||||
arm32_root_packages = vpp vlib vlib-api vnet svm vpp-api-test \
|
||||
vpp-japi gmod
|
||||
|
||||
vlib_configure_args_arm32 = --with-pre-data=128
|
||||
|
||||
vnet_configure_args_arm32 = --without-vcgn --without-ipsec --without-ipv6sr
|
||||
vpp_configure_args_arm32 = --without-vcgn --without-ipsec --without-ipv6sr
|
||||
|
||||
arm32_debug_TAG_CFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
|
||||
-fstack-protector-all -fPIC -Werror
|
||||
arm32_debug_TAG_LDFLAGS = -g -O0 -DCLIB_DEBUG -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
|
||||
-fstack-protector-all -fPIC -Werror
|
||||
|
||||
arm32_TAG_CFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
|
||||
-fstack-protector -fPIC -Werror
|
||||
arm32_TAG_LDFLAGS = -g -O2 -DFORTIFY_SOURCE=2 -DVLIB_MAX_CPUS=4 -march=armv7-a \
|
||||
-fstack-protector -fPIC -Werror
|
||||
Reference in New Issue
Block a user