Changeset 6f025a8 in mainline


Ignore:
Timestamp:
2018-07-05T21:41:25Z (6 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
eb2c8b6
Parents:
1583793
git-author:
Dzejrou <dzejrou@…> (2018-06-27 15:50:19)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:25)
Message:

cpp: fixed arm32 compilation of libcpp (and hopefully mips32eb too)

Location:
uspace
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/Makefile.common

    r1583793 r6f025a8  
    237237
    238238# Flags for the compilation of C++ code.
    239 CPPFLAGS = $(LIBCPP_INCLUDES_FLAGS) $(INCLUDES_FLAGS) -O$(OPTIMIZATION) $(CPP_FLOAT) \
     239CPPFLAGS = $(LIBCPP_INCLUDES_FLAGS) $(INCLUDES_FLAGS) -O$(OPTIMIZATION) $(CPP_ARCHSPEC) \
    240240        -imacros $(CONFIG_HEADER) \
    241241        -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32$(ENDIANESS) \
  • uspace/lib/c/arch/arm32/Makefile.common

    r1583793 r6f025a8  
    3030COMMON_CFLAGS += -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame \
    3131        -march=$(subst _,-,$(PROCESSOR_ARCH))
     32CPP_ARCHSPEC= -ffixed-r9 -mtp=soft -fno-omit-frame-pointer -mapcs-frame \
     33        -march=$(subst _,-,$(PROCESSOR_ARCH))
    3234
    3335LDFLAGS += -Wl,--gc-sections
     
    3537ifeq ($(CONFIG_FPU),y)
    3638        COMMON_CFLAGS += -mfloat-abi=hard
     39        CPP_ARCHSPEC += -mfloat-abi=hard
    3740endif
    3841
  • uspace/lib/c/arch/mips32/Makefile.common

    r1583793 r6f025a8  
    2828
    2929COMMON_CFLAGS += -msoft-float -mabi=32
    30 CPP_FLOAT = -msoft-float
     30CPP_ARCHSPEC = -msoft-float -mabi=32
    3131AS_PROLOG = .module softfloat;.abicalls;
    3232LDFLAGS += -Wl,--gc-sections
  • uspace/lib/c/arch/mips32eb/Makefile.common

    r1583793 r6f025a8  
    2828
    2929COMMON_CFLAGS += -msoft-float -mabi=32
     30CPP_ARCHSPEC = -msoft-float -mabi=32
    3031AS_PROLOG = .module softfloat;.abicalls;
    3132LDFLAGS += -Wl,--gc-sections
  • uspace/lib/cpp/Makefile

    r1583793 r6f025a8  
    11#
    2 # Copyright (c) 2017 Jaroslav Jindrak
     2# Copyright (c) 2018 Jaroslav Jindrak
    33# All rights reserved.
    44#
     
    5454        src/typeindex.cpp \
    5555        src/typeinfo.cpp \
     56        src/__bits/glue.cpp \
    5657        src/__bits/runtime.cpp \
    5758        src/__bits/trycatch.cpp \
  • uspace/lib/cpp/src/__bits/glue.cpp

    r1583793 r6f025a8  
     1/*
     2 * Copyright (c) 2018 Jaroslav Jindrak
     3 * All rights reserved.
     4 *
     5 * Redistribution and use in source and binary forms, with or without
     6 * modification, are permitted provided that the following conditions
     7 * are met:
     8 *
     9 * - Redistributions of source code must retain the above copyright
     10 *   notice, this list of conditions and the following disclaimer.
     11 * - Redistributions in binary form must reproduce the above copyright
     12 *   notice, this list of conditions and the following disclaimer in the
     13 *   documentation and/or other materials provided with the distribution.
     14 * - The name of the author may not be used to endorse or promote products
     15 *   derived from this software without specific prior written permission.
     16 *
     17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     27 */
     28
     29/**
     30 * This file contains glue code that makes different
     31 * architectures pass.
     32 */
     33
     34#ifdef PLATFORM_arm
     35
     36/**
     37 * ARM32 does not have GCC atomic operations inlined by
     38 * the compiler, so we need to define stubs for our library
     39 * to compile on this architecture.
     40 */
     41extern "C"
     42{
     43#define LIBCPP_GLUE_OP_AND_FETCH(NAME, OP, TYPE, SIZE) \
     44    TYPE __sync_##NAME##_and_fetch_##SIZE (volatile void* vptr, TYPE val) \
     45    { \
     46        TYPE* ptr = (TYPE*)vptr; \
     47        *ptr = *ptr OP val; \
     48        return *ptr; \
     49    }
     50
     51LIBCPP_GLUE_OP_AND_FETCH(add, +, unsigned, 4)
     52LIBCPP_GLUE_OP_AND_FETCH(sub, -, unsigned, 4)
     53
     54#define LIBCPP_GLUE_CMP_AND_SWAP(TYPE, SIZE) \
     55    TYPE __sync_compare_and_swap_##SIZE (TYPE* ptr, TYPE old_val, TYPE new_val) \
     56    { \
     57        if (*ptr == old_val) \
     58            *ptr = new_val; \
     59        return *ptr; \
     60    }
     61
     62LIBCPP_GLUE_CMP_AND_SWAP(unsigned, 4)
     63}
     64#endif
Note: See TracChangeset for help on using the changeset viewer.