diff options
author | Christophe Fontaine <christophe.fontaine@qosmos.com> | 2016-04-09 12:38:49 +0900 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2016-04-18 13:20:57 +0000 |
commit | fef15b4bb88c61248393b93d13b1f79bb628def0 (patch) | |
tree | 0f34cc14987dde62a32201101c29b24b023fd36b /build-data | |
parent | 7a2a378d2dcdba900651b02859b686cafe6dfd22 (diff) |
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>
Diffstat (limited to 'build-data')
-rw-r--r-- | build-data/packages/vnet.mk | 8 | ||||
-rw-r--r-- | build-data/packages/vpp.mk | 8 | ||||
-rw-r--r-- | build-data/platforms/arm32.mk | 37 |
3 files changed, 49 insertions, 4 deletions
diff --git a/build-data/packages/vnet.mk b/build-data/packages/vnet.mk index 46d3c1d4..cafb9393 100644 --- a/build-data/packages/vnet.mk +++ b/build-data/packages/vnet.mk @@ -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) diff --git a/build-data/packages/vpp.mk b/build-data/packages/vpp.mk index f96235f4..be10e17d 100644 --- a/build-data/packages/vpp.mk +++ b/build-data/packages/vpp.mk @@ -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) diff --git a/build-data/platforms/arm32.mk b/build-data/platforms/arm32.mk new file mode 100644 index 00000000..fecc5bbc --- /dev/null +++ b/build-data/platforms/arm32.mk @@ -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 |