From fef15b4bb88c61248393b93d13b1f79bb628def0 Mon Sep 17 00:00:00 2001 From: Christophe Fontaine Date: Sat, 9 Apr 2016 12:38:49 +0900 Subject: 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 --- vpp/api/api.c | 16 ++++++++-------- vpp/api/gmon.c | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) (limited to 'vpp') diff --git a/vpp/api/api.c b/vpp/api/api.c index 37cd57ffc3b..b47214f049d 100644 --- a/vpp/api/api.c +++ b/vpp/api/api.c @@ -3314,7 +3314,7 @@ static void vl_api_cli_request_t_handler rp->_vl_msg_id = ntohs(VL_API_CLI_REPLY); rp->context = mp->context; - unformat_init_vector (&input, (u8 *)mp->cmd_in_shmem); + unformat_init_vector (&input, (u8 *)(uword)mp->cmd_in_shmem); vlib_cli_input (vm, &input, shmem_cli_output, (uword)&shmem_vec); @@ -5191,11 +5191,11 @@ static void vl_api_ikev2_profile_add_del_t_handler (vl_api_ikev2_profile_add_del_t * mp) { - vlib_main_t * vm = vlib_get_main(); vl_api_ikev2_profile_add_del_reply_t * rmp; int rv = 0; #if IPSEC > 0 + vlib_main_t * vm = vlib_get_main(); clib_error_t * error; u8 * tmp = format(0, "%s", mp->name); error = ikev2_add_del_profile(vm, tmp, mp->is_add); @@ -5213,11 +5213,11 @@ static void vl_api_ikev2_profile_set_auth_t_handler (vl_api_ikev2_profile_set_auth_t * mp) { - vlib_main_t * vm = vlib_get_main(); vl_api_ikev2_profile_set_auth_reply_t * rmp; int rv = 0; #if IPSEC > 0 + vlib_main_t * vm = vlib_get_main(); clib_error_t * error; u8 * tmp = format(0, "%s", mp->name); u8 * data = vec_new (u8, mp->data_len); @@ -5238,11 +5238,11 @@ static void vl_api_ikev2_profile_set_id_t_handler (vl_api_ikev2_profile_set_id_t * mp) { - vlib_main_t * vm = vlib_get_main(); - vl_api_ikev2_profile_set_id_reply_t * rmp; + vl_api_ikev2_profile_add_del_reply_t * rmp; int rv = 0; #if IPSEC > 0 + vlib_main_t * vm = vlib_get_main(); clib_error_t * error; u8 * tmp = format(0, "%s", mp->name); u8 * data = vec_new (u8, mp->data_len); @@ -5263,11 +5263,11 @@ static void vl_api_ikev2_profile_set_ts_t_handler (vl_api_ikev2_profile_set_ts_t * mp) { - vlib_main_t * vm = vlib_get_main(); vl_api_ikev2_profile_set_ts_reply_t * rmp; int rv = 0; #if IPSEC > 0 + vlib_main_t * vm = vlib_get_main(); clib_error_t * error; u8 * tmp = format(0, "%s", mp->name); error = ikev2_set_profile_ts(vm, tmp, mp->proto, mp->start_port, @@ -5287,11 +5287,11 @@ static void vl_api_ikev2_set_local_key_t_handler (vl_api_ikev2_set_local_key_t * mp) { - vlib_main_t * vm = vlib_get_main(); - vl_api_ikev2_set_local_key_reply_t * rmp; + vl_api_ikev2_profile_set_ts_reply_t * rmp; int rv = 0; #if IPSEC > 0 + vlib_main_t * vm = vlib_get_main(); clib_error_t * error; error = ikev2_set_local_key(vm, mp->key_file); diff --git a/vpp/api/gmon.c b/vpp/api/gmon.c index 3098423943e..32786d63b38 100644 --- a/vpp/api/gmon.c +++ b/vpp/api/gmon.c @@ -52,7 +52,7 @@ typedef struct { pid_t *vpef_pid_ptr; u64 last_sig_errors; u64 current_sig_errors; - u64 * sig_error_bitmap; + uword * sig_error_bitmap; vlib_main_t *vlib_main; vlib_main_t ** my_vlib_mains; -- cgit 1.2.3-korg