OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [m68k/] [arch/] [current/] [cdl/] [hal_m68k.cdl] - Rev 856

Go to most recent revision | Compare with Previous | Blame | View Log

# ====================================================================
#
#      hal_m68k.cdl
#
#      m68k architectural HAL package configuration data
#
# ====================================================================
# ####ECOSGPLCOPYRIGHTBEGIN####                                             
# -------------------------------------------                               
# This file is part of eCos, the Embedded Configurable Operating System.    
# Copyright (C) 2003, 2004, 2006, 2008 Free Software Foundation, Inc.       
#
# eCos is free software; you can redistribute it and/or modify it under     
# the terms of the GNU General Public License as published by the Free      
# Software Foundation; either version 2 or (at your option) any later       
# version.                                                                  
#
# eCos is distributed in the hope that it will be useful, but WITHOUT       
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or     
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License     
# for more details.                                                         
#
# You should have received a copy of the GNU General Public License         
# along with eCos; if not, write to the Free Software Foundation, Inc.,     
# 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             
#
# As a special exception, if other files instantiate templates or use       
# macros or inline functions from this file, or you compile this file       
# and link it with other works to produce a work based on this file,        
# this file does not by itself cause the resulting work to be covered by    
# the GNU General Public License. However the source code for this file     
# must still be made available in accordance with section (3) of the GNU    
# General Public License v2.                                                
#
# This exception does not invalidate any other reasons why a work based     
# on this file might be covered by the GNU General Public License.          
# -------------------------------------------                               
# ####ECOSGPLCOPYRIGHTEND####                                               
# ====================================================================
######DESCRIPTIONBEGIN####
#
# Author(s):     bartv
# Date:          2003-06-04
#
#####DESCRIPTIONEND####
#========================================================================

cdl_package CYGPKG_HAL_M68K {
    display "m68k architecture"
    parent        CYGPKG_HAL
    doc           ref/hal-m68k-arch.html
    hardware
    description   "
        The m68k architecture HAL package provides generic
        support for 68000 and ColdFire processors."
    
    include_dir   cyg/hal
    compile hal_m68k.c hal_arch.S m68k_stub.c
    define_proc {
        puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H   <pkgconf/hal_m68k.h>"
    }
    make {
        <PREFIX>/lib/vectors.o : <PACKAGE>/src/vectors.S
        $(CC) -Wp,-MD,vectors.tmp $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -c -o $@ $<
        @echo $@ ": \\" > $(notdir $@).deps
        @tail -n +2 vectors.tmp >> $(notdir $@).deps
        @echo >> $(notdir $@).deps
        @rm vectors.tmp
    }

    # callgraph profiling, i.e. compiling with -pg, is supported. However
    # -pg is incompatible with -fomit-frame-pointer
    implements CYGINT_PROFILE_HAL_MCOUNT
    requires { ! (is_substr(CYGBLD_GLOBAL_CFLAGS, " -pg") && is_substr(CYGBLD_GLOBAL_CFLAGS, "-fomit-frame-pointer")) }
    
    cdl_option CYGNUM_HAL_DEFAULT_INTERRUPT_STACK_SIZE {
        display     "Default size for the startup and interrupt stack"
        description "
            The M68K HAL uses a single stack for system startup and for handling
          interrupts and exceptions. The size of this stack is configurable via
          the common HAL's CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE option, but
          this architectural HAL provides a default value."
        flavor      data
        calculated  { is_enabled(CYGNUM_HAL_M68K_PLATFORM_DEFAULT_INTERRUPT_STACK_SIZE) ?
            CYGNUM_HAL_M68K_PLATFORM_DEFAULT_INTERRUPT_STACK_SIZE :
            (CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING ? 4096 : 2048) }
    }

    cdl_option CYGNUM_HAL_M68K_STARTUP_STACK_SIZE {
        display     "Stack size to use during startup"
        active_if   !CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
        flavor      data
        default_value   2048
        description "
            By default eCos runs with a separate interrupt stack, which also gets
          used during system startup. This saves memory because it is not necessary
          to allow for interrupt overheads on every thread stack, but adds a number
          of instructions to the interrupt processing code. If the interrupt stack
          is disabled then a separate startup stack is needed. That stack will be
          used for running system initialization and for running some application
          code including cyg_start() and C++ static constructions."
    }
    
    cdl_component CYGPKG_HAL_M68K_VARIANT {
        display "Variant details"
        flavor  none
        description "
            Various subsystems like the floating point and memory management
            units are available on some but not all 68000 processors. Variant
            HAL packages will list which of these subsystems are actually
            present."

        cdl_interface CYGINT_HAL_M68K_VARIANT_TYPES {
            display "Data types"
            flavor  bool
            description "
                This interface will be implemented if the specific processor
                being used requires non-default data type definitions."
        }
        
        cdl_interface CYGINT_HAL_M68K_VARIANT_FPU {
            display "Floating point unit"
            flavor  bool
            description "
                This interface will be implemented if the specific processor
                being used has floating point hardware."
        }

        if { 0 } {
            # No MMU support available yet
            cdl_interface CYGINT_HAL_M68K_VARIANT_MMU {
                display "Floating point unit"
                flavor  bool
                description "
                    This interface will be implemented if the specific processor
                    being used has a memory management unit."
            }
        }

        cdl_interface CYGINT_HAL_M68K_VARIANT_CACHE {
            display "Cache"
            flavor  bool
            description "
                This interface will be implemented if the specific processor
                being used has an instruction cache, a data cache, or both."
        }

        cdl_interface CYGINT_HAL_M68K_VARIANT_IRAM {
            display     "On-chip RAM"
            flavor      bool
            description "
                This interface will be implemented if the specific processor
              being used has on-chip RAM."
        }
        
        cdl_interface CYGINT_HAL_M68K_USE_STANDARD_PLATFORM_STUB_SUPPORT {
            display     "Use standard platform gdb stub support"
            flavor      bool
            make -priority 1 {
                <PREFIX>/include/cyg/hal/plf_stub.h : <PACKAGE>/src/plf_stub.h
                @cp $< $@
            }
            description "
                For platforms where target-side gdb stub support may be used the
              platform HAL is expected to provide a header file <cyg/hal/plf_stub.h>.
              In practice the same header file is applicable to nearly all platforms
              so the M68K architectural HAL will provide this header when the platform
              HAL requests this interface."
        }
    }

    cdl_component CYGPKG_HAL_M68K_FPU {
        display     "Support for the floating point unit"
        active_if   CYGINT_HAL_M68K_VARIANT_FPU
        flavor      none
        description "
            If the target processor has a hardware floating point unit then
            this component defines additional configuration options related
            to that unit."

        cdl_option CYGIMP_HAL_M68K_FPU_SAVE {
            display         "Save FPU state during context switch"
            default_value   1
            description "
                By default the floating point context gets saved during a
                context switch. This can be suppressed if the application
                does not actually perform any floating point arithmetic, or
                if it only does so from one thread."
        }

        cdl_option CYGNUM_HAL_M68K_FPU_CR_DEFAULT {
            display     "Default value for the FPU control register"
            flavor      data
            default_value   0
            legal_values    0 to 0x0FFFF
            description "
                The FPU control register controls rounding modes, precision,
                and exceptions. The default value of 0 gives IEE754 standard
                behaviour. It is assumed that the control register's value is
                not changed while the system is running, and hence does not
                have to be saved or restored during a thread switch or when
                an interrupt happens."
        }
    }

    cdl_component CYGPKG_HAL_M68K_OPTIONS {
        display     "Architectural HAL build options"
        flavor      none
        description "
            Package-specific build options including control over compiler
          flags used only when building this package, and details of which
          tests are built."

        cdl_option CYGPKG_HAL_M68K_CFLAGS_ADD {
            display         "Additional compiler flags"
            flavor          data
            no_define
            default_value   { "" }
            description   "
                This option modifies the set of compiler flags for building
              the architectural HAL package. These flags are used in addition
              to the set of global flags."
        }
        
        cdl_option CYGPKG_HAL_M68K_CFLAGS_REMOVE {
            display         "Suppressed compiler flags"
            flavor          data
            no_define
            default_value   { "" }
            description   "
                This option modifies the set of compiler flags for building
              the architectural HAL package. These flags are removed from
              the set of global flags if present."
        }
        
        cdl_option CYGPKG_HAL_M68K_TESTS {
            display         "Architectural HAL tests"
            flavor          data
            no_define
            calculated      { (CYGINT_HAL_M68K_VARIANT_IRAM ? "tests/iram1" : "") .
                ""
            }
            description   "
                This option specifies the set of tests for the M68K architectural HAL."
        }
        
        cdl_option CYGBLD_LINKER_SCRIPT {
            display "Linker script"
            flavor data
            no_define
            calculated  { "src/m68k.ld" }
            make {
                <PREFIX>/lib/target.ld: <PACKAGE>/src/m68k.ld
                $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(ACTUAL_CFLAGS) -o $@ $<
                @echo $@ ": \\" > $(notdir $@).deps
                @tail -n +2 target.tmp >> $(notdir $@).deps
                @echo >> $(notdir $@).deps
                @rm target.tmp
            }
        }
    }
}

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.