changeset 3056:2090db533f3f

* New package -- Freescale Kinetis variant HAL.
author sergeig
date Sun, 30 Oct 2011 20:07:41 +0000
parents d72e3f7ef586
children 0196db0acc4f
files packages/hal/cortexm/kinetis/var/current/ChangeLog packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl packages/hal/cortexm/kinetis/var/current/cdl/kinetis_clocking.cdl packages/hal/cortexm/kinetis/var/current/include/hal_cache.h packages/hal/cortexm/kinetis/var/current/include/hal_diag.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_rom.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_rom.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_sram.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_sram.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_rom.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_rom.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_sram.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_sram.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.ldi packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.h packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.ldi packages/hal/cortexm/kinetis/var/current/include/plf_stub.h packages/hal/cortexm/kinetis/var/current/include/var_arch.h packages/hal/cortexm/kinetis/var/current/include/var_intr.h packages/hal/cortexm/kinetis/var/current/include/var_io.h packages/hal/cortexm/kinetis/var/current/include/var_io_devs.h packages/hal/cortexm/kinetis/var/current/include/var_io_flexbus.h packages/hal/cortexm/kinetis/var/current/include/variant.inc packages/hal/cortexm/kinetis/var/current/src/hal_diag.c packages/hal/cortexm/kinetis/var/current/src/kinetis_clocking.c packages/hal/cortexm/kinetis/var/current/src/kinetis_misc.c
diffstat 31 files changed, 4914 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/ChangeLog
@@ -0,0 +1,57 @@
+2011-10-19  Ilija Kocho  <ilijak@siva.com.mk>
+
+	* cdl/hal_cortexm_kinetis.cdl:
+	* cdl/kinetis_clocking.cdl:
+	* src/hal_diag.c:
+	* src/kinetis_misc.c:
+	* src/kinetis_clocking.c:
+	* include/hal_cache.h:
+	* include/hal_diag.h:
+	* include/plf_stub.h:
+	* include/variant.inc:
+	* include/var_arch.h:
+	* include/var_intr.h:
+	* include/var_io.h:
+	* include/var_io_devs.h:
+	* include/var_io_flexbus.h:
+	* include/pkgconf/mlt_kinetis_flash_sram2s_rom.h
+	* include/pkgconf/mlt_kinetis_flash_sram2s_rom.ldi
+	* include/pkgconf/mlt_kinetis_flash_sram2s_sram.h
+	* include/pkgconf/mlt_kinetis_flash_sram2s_sram.ldi
+	* include/pkgconf/mlt_kinetis_flash_unisram_rom.h
+	* include/pkgconf/mlt_kinetis_flash_unisram_rom.ldi
+	* include/pkgconf/mlt_kinetis_flash_unisram_sram.h
+	* include/pkgconf/mlt_kinetis_flash_unisram_sram.ldi
+	* include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.h
+	* include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.ldi
+	* include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.h
+	* include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.ldi
+	* include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.h
+	* include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.ldi
+	* include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.h
+	* include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.ldi
+	New package -- Freescale Kinetis variant HAL.
+
+//===========================================================================
+// ####GPLCOPYRIGHTBEGIN####
+// -------------------------------------------
+// This file is part of eCos, the Embedded Configurable Operating System.
+// Copyright (C) 2011 Free Software Foundation, Inc.
+//
+// This program 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.
+//
+// This program 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 this program; if not, write to the
+// Free Software Foundation, Inc., 51 Franklin Street,
+// Fifth Floor, Boston, MA  02110-1301, USA.
+// -------------------------------------------
+// ####GPLCOPYRIGHTEND####
+//===========================================================================
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/cdl/hal_cortexm_kinetis.cdl
@@ -0,0 +1,628 @@
+##==========================================================================
+##
+##      hal_cortexm_kinetis.cdl
+##
+##      Cortex-M Freescale Kinetis variant HAL configuration data
+##
+##==========================================================================
+## ####ECOSGPLCOPYRIGHTBEGIN####                                            
+## -------------------------------------------                              
+## This file is part of eCos, the Embedded Configurable Operating System.   
+## Copyright (C) 2010, 2011 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):    Ilija Kocho <ilijak@siva.com.mk>
+## Date:         2010-12-05
+##
+######DESCRIPTIONEND####
+##
+##==========================================================================
+
+cdl_package CYGPKG_HAL_CORTEXM_KINETIS {
+    display       "Freescale Kinetis Cortex-M4 Variant"
+    parent        CYGPKG_HAL_CORTEXM
+    hardware
+    include_dir   cyg/hal
+    define_header hal_cortexm_kinetis.h
+    description   "
+        This package provides generic support for the Freescale Cortex-M4
+        based Kinetis microcontroller family.
+        It is also necessary to select a variant and platform HAL package."
+
+    compile       hal_diag.c kinetis_misc.c kinetis_clocking.c
+
+    implements    CYGINT_HAL_DEBUG_GDB_STUBS
+    implements    CYGINT_HAL_DEBUG_GDB_STUBS_BREAK
+    implements    CYGINT_HAL_VIRTUAL_VECTOR_SUPPORT
+    implements    CYGINT_HAL_VIRTUAL_VECTOR_COMM_BAUD_SUPPORT
+
+    requires      { CYGHWR_HAL_CORTEXM == "M4" }
+
+    define_proc {
+        puts $::cdl_system_header "#define CYGBLD_HAL_TARGET_H   <pkgconf/hal_cortexm.h>"
+        puts $::cdl_system_header "#define CYGBLD_HAL_VARIANT_H  <pkgconf/hal_cortexm_kinetis.h>"
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS {
+        display          "Kinetis part"
+        flavor           data
+        calculated { "MK" . CYGHWR_HAL_CORTEXM_KINETIS_SUBFAM .
+            (CYGHWR_HAL_CORTEXM_KINETIS_FPU ? "F" : "D") .
+            (CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM ? "X" : "N") .
+            CYGHWR_HAL_CORTEXM_KINETIS_FLASH_NAME }
+        description   "
+            Kinetis family has several sub-families, with various peripheral
+            sets and CPU options. Each sub-family consists of several
+            members differing by sizes of on-chip FLASH and SRAM. This
+            control, enables the user to build Kinetis member part and so
+            tailor HAL for a specific microcontroller by selection of
+            microcontroller's properties such as microcontroller sub-family,
+            memory options, etc."
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_SUBFAM {
+            display          "Sub-family"
+            flavor           data
+            default_value    { 60 }
+            legal_values     { 10 20 30 40 50 60 70 }
+            description "
+                Kinetis family consists of several sub-families differing by
+                features and CPU power."
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_FPU {
+            display          "Floating Point Unit option"
+            implements    CYGINT_HAL_CORTEXM_FPU
+            flavor           bool
+            default_value    { 0 }
+            description "Select whether the chip has Floating Point Unit."
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_FLASH_NAME {
+            display "Flash name segment"
+            flavor           data
+            default_value    { 512 }
+            legal_values     { 32 64 96 128 256 512 "1M0" }
+            description   "
+                Flash size is represented in part name encoded as KiB
+                (e.g. 512) or MiB (e.g. 1M0)."
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM {
+            display          "FlexNVM option"
+            flavor           bool
+            default_value    { 0 }
+            description "Select whether the chip has FlexNVM."
+        }
+    }
+
+    cdl_option CYGNUM_HAL_CORTEXM_PRIORITY_LEVEL_BITS {
+        display      "CPU exception priority level bits"
+        flavor       data
+        default_value   4
+        description  "
+            This option defines the number of bits used to encode the
+            exception priority levels that this variant of the Cortex-M
+            CPU implements."
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLOCKING {
+        display       "Clocking"
+        flavor        data
+        no_define
+        calculated CYGHWR_HAL_CORTEXM_KINETIS_MCG
+        description "Configure system clock and subsystem clocking."
+
+        cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ_SP {
+            display "System frequency clock setpoint"
+            flavor data
+            legal_values  32768 to 220000000
+            default_value 96000000
+            description "Desired system clock frequency"
+        }
+       script kinetis_clocking.cdl
+    }
+
+    cdl_option CYGNUM_HAL_KERNEL_COUNTERS_CLOCK_ISR_DEFAULT_PRIORITY {
+        display       "Clock interrupt ISR priority"
+        flavor        data
+        default_value 0xE0
+        description   "Set clock ISR priority. Default setting is lowest priority."
+    }
+
+    cdl_component CYGNUM_HAL_RTC_CONSTANTS {
+        display       "Real-time clock constants"
+        flavor        none
+        no_define
+        cdl_option CYGNUM_HAL_RTC_NUMERATOR {
+            display       "Real-time clock numerator"
+            flavor        data
+            default_value 1000000000
+        }
+        cdl_option CYGNUM_HAL_RTC_DENOMINATOR {
+            display       "Real-time clock denominator"
+            flavor        data
+            default_value 100
+        }
+        cdl_option CYGNUM_HAL_RTC_PERIOD {
+            display       "Real-time clock period"
+            flavor        data
+            default_value 1000000 / CYGNUM_HAL_RTC_DENOMINATOR
+            description   "
+                The period defined here is something of a fake, it is
+                expressed in terms of a notional 1MHz clock. The value
+                actually installed in the hardware is calculated from
+                the current settings of the clock generation hardware."
+        }
+    }
+
+    cdl_component CYG_HAL_STARTUP {
+        display       "Startup type"
+        flavor        data
+        calculated  {
+            (CYG_HAL_STARTUP_PLF && (CYG_HAL_STARTUP_PLF!="ByVariant")) ?
+            CYG_HAL_STARTUP_PLF : CYG_HAL_STARTUP_VAR
+        }
+        no_define
+        define -file system.h CYG_HAL_STARTUP
+        description   "
+            Startup type defines what type of application shall be built.
+            Startup type  can be defined by variant (CYG_HAL_STARTUP_VAR)
+            or platform (CYG_HAL_STARTUP_PLF). If CYG_HAL_STARTUP_PLF
+            is defined and not equal to 'ByVariant' then it shall
+            override CYG_HAL_STARTUP_VAR."
+
+        cdl_option CYG_HAL_STARTUP_VAR {
+            display       "By variant"
+            flavor        data
+            default_value {
+                (CYG_HAL_STARTUP_PLF) && (CYG_HAL_STARTUP_PLF!="ByVariant") ?
+                "ByPlatform" : "ROM" }
+            legal_values  { "ROM" "SRAM" }
+            active_if ((!CYG_HAL_STARTUP_PLF) || (CYG_HAL_STARTUP_PLF=="ByVariant"))
+            description   "
+                'ROM' startup builds a stand-alone application which will
+                be placed into flash. SRAM startup builds application
+                intended for loading in on-chip SRAM by means of JTAG/SWD.
+                Note: Variant Startup Type can be overriden/overloaded by
+                Platform Startup Type."
+        }
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM_CONF {
+        display "FlexNVM configuration"
+        flavor none
+        no_define
+        active_if CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM
+        requires {
+            CYGHWR_HAL_CORTEXM_KINETIS_EEE_NVM_PART_KIB <=
+            CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB
+        }
+
+        cdl_component CYGHWR_HAL_CORTEXM_KINETIS_EEE {
+            display "Enhanced EEPROM (EEE)"
+            flavor bool;
+
+            cdl_option CYGHWR_HAL_KINETIS_EEE_SIZE {
+                display "EEE Size \[Bytes\]"
+                flavor data
+                legal_values { 32 64 128 256 512 1024 2048 4096 }
+                default_value 4096
+            }
+
+            cdl_component CYGHWR_HAL_KINETIS_EEE_SPLIT {
+                display "EEE Split ratio"
+                flavor data
+                legal_values { 0 2 4 8 }
+                default_value 0
+                description "
+                    Enhanced EEPROM is split in two partitions that are
+                    represented by separate sections in MLT files.
+                    The split, CYGHWR_HAL_KINETIS_EEE_SPLIT, represents
+                    partition size ratio where EEE0 partition size is
+                    1/CYGHWR_HAL_KINETIS_EEE_SPLIT of EEE size, and EEE1
+                    is the rest. As a special arrangement
+                    (CYGHWR_HAL_KINETIS_EEE_SPLIT == 0) is a PHONY, where
+                    split equals 2 but in MLT files whole EEE is counted
+                    as a single section."
+
+                cdl_option CYGHWR_HAL_KINETIS_EEE0_SIZE {
+                    display "e_eeprom0 section size \[Bytes\]"
+                    flavor data
+                    calculated { CYGHWR_HAL_KINETIS_EEE_SPLIT > 0 ?
+                        CYGHWR_HAL_KINETIS_EEE_SIZE /
+                        CYGHWR_HAL_KINETIS_EEE_SPLIT :
+                        CYGHWR_HAL_KINETIS_EEE_SIZE }
+                }
+
+                cdl_option CYGHWR_HAL_KINETIS_EEE1_SIZE {
+                    display "e_eeprom1 section size \[Bytes\]"
+                    flavor data
+                    active_if { CYGHWR_HAL_KINETIS_EEE_SPLIT > 0 }
+                    calculated { CYGHWR_HAL_KINETIS_EEE_SIZE -
+                        CYGHWR_HAL_KINETIS_EEE0_SIZE }
+                }
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_EEE_NVM_PART_KIB {
+                display "FlexNVM partition used for EEE \[KiB\]"
+                flavor data
+                default_value  32
+                legal_values { 32 64 128 192 224 256 }
+            }
+        }
+
+        cdl_component CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE {
+            display "FlexNVM D Flash"
+            flavor data
+            active_if { CYGHWR_HAL_CORTEXM_KINETIS_EEE_NVM_PART_KIB <
+                CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM_KIB}
+            calculated {
+                1024 * ( CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM_KIB -
+                         CYGHWR_HAL_CORTEXM_KINETIS_EEE_NVM_PART_KIB)
+            }
+        }
+
+        cdl_component CYGHWR_HAL_KINETIS_FLEXRAM_RAM {
+            display "Flexram ordinary RAM"
+            flavor data
+            active_if { !CYGHWR_HAL_CORTEXM_KINETIS_EEE }
+            calculated CYGHWR_HAL_KINETIS_FLEXRAM_SIZE
+        }
+
+        cdl_component CYGHWR_HAL_KINETIS_FLEXRAM_SIZE {
+            display "Flexram size"
+            flavor data
+            default_value 4096
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM_KIB {
+            display "FlexNVM size \[KiB\]"
+            flavor data
+            calculated CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB
+        }
+    }
+
+    cdl_component CYGHWR_MEMORY_LAYOUT {
+        display "Memory layout"
+        flavor data
+        no_define
+        calculated {
+            (CYGHWR_MEMORY_LAYOUT_PLF) ? CYGHWR_MEMORY_LAYOUT_PLF :
+            (CYG_HAL_STARTUP == "ROM" ) ? "kinetis_"
+            . CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT  . "_rom" :
+            (CYG_HAL_STARTUP == "SRAM") ? "kinetis_"
+            . CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT  . "_sram" :
+            "undefined" }
+        description "
+            Combination of 'Startup type' and 'Kinetis part'
+            produces the memory layout."
+
+        cdl_option CYGHWR_MEMORY_LAYOUT_LDI {
+            display "Memory layout linker script fragment"
+            flavor data
+            no_define
+            define -file system.h CYGHWR_MEMORY_LAYOUT_LDI
+            calculated { "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".ldi>" }
+        }
+
+        cdl_option CYGHWR_MEMORY_LAYOUT_H {
+            display "Memory layout header file"
+            flavor data
+            no_define
+            define -file system.h CYGHWR_MEMORY_LAYOUT_H
+            calculated { "<pkgconf/mlt_" . CYGHWR_MEMORY_LAYOUT . ".h>" }
+        }
+    }
+
+    cdl_option CYGHWR_HAL_CORTEXM_KINETIS_SRAM_UNIFIED {
+        display  "Unified on chip SRAM region"
+        flavor   bool
+        default_value    { 1 }
+        description "
+            Kinetis have two equal SRAM banks SRAM_L and SRAM_U that
+            occupy consecutive memory blocks with \(possibility for
+            simultaneous\) access from on separate buses.
+            SRAM_L is placed below 0x20000000 and SRAM_U above 0x20000000.
+            This option provides for selection between memory layout with
+            single (unified) (S)RAM region and layout with two separate
+            (S)RAM regions."
+    }
+
+    cdl_option CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION {
+        display "Utilize \".kinetis_misc\" section for HAL"
+        flavor bool
+        default_value { CYG_HAL_STARTUP == "ROM" }
+        active_if { CYG_HAL_STARTUP == "ROM" }
+        description "
+            Kinetis use FLASH locations between 0x400 and 0x40F for FLASH
+            security configuration. This leaves FLASH area below 0x400
+            out of standard linker sections. Special section
+            \".kinetis_misc\" provides linker access to this area.
+            Setting this option instructs linker to place some HAL
+            (variant/platform) \"misc.\" functions in this area."
+    }
+
+    cdl_option CYGOPT_HAL_KINETIS_DIAG_IN_MISC_FLASH_SECTION {
+        display "HAL diag. in \".kinetis_misc\" section"
+        flavor bool
+        active_if CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION
+        default_value 0
+        description "
+        By default only misc. HAL functions are stored in
+        \".kinetis_misc\" section. In addition HAL diagnostc
+        functions may be placed as well."
+    }
+
+    cdl_component CYGHWR_HAL_KINETIS_MEMORY_RESOURCES {
+        display "On chip memory resources"
+        flavor none
+        no_define
+        description "
+        View and manage on-chip memory resources.
+        Output is used for naming of 'mlt' files."
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB {
+            display "On chip Flash option \[KiB\]"
+            flavor data
+            calculated { (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_NAME == "1M0")
+                ? 1024 : CYGHWR_HAL_CORTEXM_KINETIS_FLASH_NAME
+            }
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_SRAM_KIB {
+            display "Kinetis on chip SRAM size \[KiB\]"
+            flavor data
+            calculated {
+                (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 1024 ||
+                 CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 512)   ? 128 :
+                (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 256)   ? 64 :
+                (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 128)   ? 32 :
+                (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 96 ||
+                 CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 64)    ? 16 :
+                (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB == 32)    ? 8 :
+                "Unknown"
+            }
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_SRAM_LAYOUT {
+            display "SRAM layout"
+            flavor data
+            no_define
+            calculated { CYGHWR_HAL_CORTEXM_KINETIS_SRAM_UNIFIED ?
+                "unisram" :
+                "sram2s"
+            }
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_OC_MEM_LAYOUT {
+            display "On-chip memory layout"
+            flavor data
+            no_define
+            calculated {(CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM ? "flexnvm_": "flash_")
+                . CYGHWR_HAL_CORTEXM_KINETIS_SRAM_LAYOUT }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_SIZE {
+            display "Kinetis on chip FLASH size"
+            flavor data
+            calculated { CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB * 0x400 }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_SRAM_SIZE {
+            display "Kinetis on chip SRAM size"
+            flavor data
+            calculated { CYGHWR_HAL_CORTEXM_KINETIS_SRAM_KIB * 0x400 }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE {
+            display "Kinetis onchip RAM bank size"
+            flavor  data
+            calculated { CYGHWR_HAL_KINETIS_SRAM_SIZE/2 }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLEXNVM_FLASH_SIZE {
+            display "Kinetis on chip FLASH size"
+            flavor data
+            calculated { (CYGHWR_HAL_CORTEXM_KINETIS_FLASH_KIB
+                          - CYGHWR_HAL_CORTEXM_KINETIS_EEE_NVM_PART_KIB)* 0x400 }
+            }
+
+            cdl_option CYGHWR_HAL_KINETIS_FLEXNVM_FLEXRAM_SIZE {
+                display "Kinetis on chip FlexRAM size"
+                flavor data
+                active_if { CYGHWR_HAL_CORTEXM_KINETIS_FLEXNVM &
+                    !CYGHWR_HAL_CORTEXM_KINETIS_EEE }
+                calculated { 4096 }
+            }
+
+        }
+
+        cdl_interface CYGINT_HAL_CORTEXM_KINETIS_FLEXBUS {
+            display "Platform uses FlexBus"
+            flavor bool
+            description "
+                This interface will be implemented if the specific
+                controller being used provides FlexBus and if FlexBus is
+                used on target hardware"
+        }
+
+        cdl_component CYGPKG_HAL_CORTEXM_KINETIS_FLEXBUS {
+            display       "FlexBus"
+            flavor bool
+            active_if     CYGINT_HAL_CORTEXM_KINETIS_FLEXBUS
+            default_value CYGINT_HAL_CORTEXM_KINETIS_FLEXBUS
+            description "FlexBus provides access for external memory."
+
+            for { set ::chipsel 0 } { $::chipsel < 6 } { incr ::chipsel } {
+
+                cdl_interface CYGINT_HAL_KINETIS_FB_CS[set ::chipsel] {
+                    display     "Platform uses Chip select [set ::chipsel]"
+                    flavor      bool
+                    description "
+                    This interface will be implemented if the specific
+                    controller being used provides chip select [set ::chipsel], and if
+                    that chip select is used on target hardware."
+                }
+
+                cdl_component CYGHWR_HAL_KINETIS_FB_CS[set ::chipsel] {
+                    display       "Chip select [set ::chipsel]"
+                    flavor        bool
+                    active_if     CYGINT_HAL_KINETIS_FB_CS[set ::chipsel]
+                    default_value CYGINT_HAL_KINETIS_FB_CS[set ::chipsel]
+                    description   "
+                    This option includes initialization data for
+                    chip select [set ::chipsel]."
+
+                    cdl_option CYGHWR_HAL_KINETIS_FB_CS[set ::chipsel]_CR_PS {
+                        display "Port size (encoded)"
+                        flavor data
+                        calculated ( \
+                            CYGHWR_HAL_KINETIS_FB_CS[set ::chipsel]_CR_PSB == 32 ? 0 : \
+                            CYGHWR_HAL_KINETIS_FB_CS[set ::chipsel]_CR_PSB == 8  ? 1 : \
+                            CYGHWR_HAL_KINETIS_FB_CS[set ::chipsel]_CR_PSB == 16 ? 2 : 3)
+                    }
+                }
+            }
+        }
+
+        cdl_component CYGHWR_HAL_KINETIS_FLASH_CONF {
+        display "Flash configuration field"
+        flavor none
+        no_define
+
+        active_if { CYG_HAL_STARTUP == "ROM" }
+
+        description "
+            The program flash memory contains a 16-byte flash
+            configuration field that stores default protection settings
+            (loaded on reset) and security information that allows the MCU to
+            restrict access to the flash module.
+            Note: Changing some values in Flash configuration field may make
+            flash inaccessible and disable further re-programming of the flash
+            permanently. Consult respective Kinetis' documentation before dealing
+            with the Flash configuration field. Default values are equal
+            to the factory values."
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_BACKDOOR_KEY {
+            display "Backdoor comparison key"
+            flavor data
+            default_value { "\{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff \}" }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_FPROT {
+            display "Program flash protection"
+            flavor data
+            default_value { "\{ 0xff, 0xff, 0xff, 0xff \}" }
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_FSEC {
+            display "Flash security byte"
+            flavor data
+            default_value 0xfe
+
+            description "
+                Note: FSEC default value is deliberately set to
+                0xfe in order to disable chip lockout."
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_FOPT {
+            display "Flash nonvolatile option byte"
+            flavor data
+            default_value 0xff
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_FDPROT {
+            display "Data flash protection byte"
+            flavor data
+            default_value 0xff
+        }
+
+        cdl_option CYGHWR_HAL_KINETIS_FLASH_CONF_FEPROT {
+            display "EEPROM protection byte"
+            flavor data
+            default_value 0xff
+        }
+    }
+
+    for { set ::channel 0 } { $::channel < 6 } { incr ::channel } {
+
+        cdl_interface CYGINT_HAL_FREESCALE_UART[set ::channel] {
+            display     "Platform provides UART [set ::channel] HAL"
+            flavor      bool
+            description "
+                This interface will be implemented if the specific
+                controller being used has on-chip UART [set ::channel],
+                and if that UART is accessible on the target hardware."
+        }
+
+        cdl_interface CYGINT_HAL_FREESCALE_UART[set ::channel]_RTSCTS {
+            display     "Platform provides HAL for UART[set ::channel] hardware flow control."
+            flavor      bool
+            description "
+                This interface will be implemented if the specific
+                on-chip UART [set ::channel] has RTS/CTS flow control
+                that is accessible on the target hardware."
+        }
+    }
+
+    cdl_component CYGPKG_HAL_CORTEXM_KINETIS_OPTIONS {
+        display "Build options"
+        flavor  none
+        no_define
+        description   "
+            Package specific build options including control over
+            compiler flags used only in building this package."
+
+        cdl_option CYGPKG_HAL_CORTEXM_KINETIS_CFLAGS_ADD {
+            display "Additional compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building the Kinetis variant HAL package. These flags
+                are used in addition to the set of global flags."
+        }
+
+        cdl_option CYGPKG_HAL_CORTEXM_KINETIS_CFLAGS_REMOVE {
+            display "Suppressed compiler flags"
+            flavor  data
+            no_define
+            default_value { "" }
+            description   "
+                This option modifies the set of compiler flags for
+                building the Kinetis variant HAL package. These flags
+                are removed from the set of global flags if present."
+        }
+    }
+}
+
+# EOF hal_cortexm_kinetis.cdl
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/cdl/kinetis_clocking.cdl
@@ -0,0 +1,635 @@
+##==========================================================================
+##
+##      kinetis_clocking.cdl
+##
+##      Cortex-M Freescale Kinetis Clocking
+##
+##==========================================================================
+## ####ECOSGPLCOPYRIGHTBEGIN####                                            
+## -------------------------------------------                              
+## This file is part of eCos, the Embedded Configurable Operating System.   
+## Copyright (C) 2011 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):    Ilija Kocho <ilijak@siva.com.mk>
+## Date:         2011-10-19
+##
+######DESCRIPTIONEND####
+##
+##==========================================================================
+
+
+#    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLOCKING
+#    display       "Clocking"
+
+    cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ {
+        display "System frequency actual value"
+        flavor data
+        calculated {
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_INT_RC   ?
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_INT_RC   :
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_EXT_RC   ?
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_EXT_RC   :
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL      ?
+            CYGNUM_HAL_CORTEXM_KINETIS_MCG_PLL_FREQ_AV :
+            CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_FLL      ?
+            CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_FREQ_AV :
+            0
+        }
+        description "Operating system clock frequency."
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_MCG {
+        display "MCG"
+        flavor data
+        no_define
+        calculated { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK . " " .
+            ((CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ+500000)/1000000) . "MHz, " . (
+                  (CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC == "EXT_REFCLK") ?
+                  CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS :
+                  CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC)
+
+        }
+        description "Multipurpose Clock Generator"
+
+        cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK {
+            display "System clock source"
+            flavor data
+            default_value { "PLL" }
+            legal_values {
+                "PLL" "FLL" "EXT_REFCLK"
+            }
+            description "
+                Select one of 3 options for MCG output clock:
+                PLL or FLL oscillator or External reference clock."
+        }
+
+        cdl_component CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT {
+            display "EXT_REFCLK source clock settings"
+            flavor none
+            no_define
+            active_if {
+                (CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "EXT_REFCLK") ||
+                (CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC == "EXT_REFCLK")
+            }
+            description "Set External Reference Clock frequency and type."
+
+            cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS {
+                display "Clock type"
+                flavor data
+                default_value { "OSC" }
+                legal_values { "OSC" "XTAL" "RTC"}
+
+                requires {
+                    (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "OSC") implies
+                    (CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ <= 50000000)
+                }
+
+                requires {
+                    (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "XTAL") implies
+                    (((CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ >= 3000000) &&
+                      (CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ <= 32000000)) ||
+                      ((CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ >= 32000) &&
+                       (CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ <= 40000)))
+                }
+
+                requires { (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "RTC")
+                    implies (CYGHWR_HAL_CORTEXM_KINETIS_RTC == 1)
+                }
+                requires { (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "RTC")
+                    implies (CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "FLL")
+                }
+                requires { (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "RTC")
+                    implies (CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ == 32768)
+                }
+
+                description "
+                    Ext reference can be External oscillator or a crystal
+                    for the on-chip oscillator or Real Time Clock."
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ {
+                display "Clock frequency"
+                flavor data
+                legal_values  0 to 50000000
+                default_value {
+                    is_active(CYGHWR_HAL_CORTEXM_KINETIS_PLF_XTAL_OR_OSC_FREQ) ?
+                    CYGHWR_HAL_CORTEXM_KINETIS_PLF_XTAL_OR_OSC_FREQ :
+                    4000000
+                }
+                description "External oscillator or crystal reference in Hz."
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_OSC_CAP {
+                display "XTAL parallel C \[pF\]"
+                flavor data
+                active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS == "XTAL" }
+                legal_values { 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 }
+                default_value 0
+                description "
+                    The oscillator has 4 on-chip capacitors that combined
+                    produce capacitance in parallel to the crystal."
+            }
+        }
+
+        cdl_component CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL {
+            display "FLL / PLL configuration"
+            flavor none
+            no_define
+            description "
+                PLL / FLL parameters are being calculated on a
+                base of required system frequrncy and output as well as
+                reference oscillator/frequency settings."
+
+            cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP {
+                display "PLL/FLL output frequency set point"
+                flavor data
+                legal_values  32768 to 220000000
+                calculated CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ_SP
+                description "Desired PLL output frequency."
+            }
+
+            cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC {
+                display "Reference clock source for FLL or PLL"
+                flavor data
+                default_value { "EXT_REFCLK" }
+
+                requires { (CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC == "INT_RC_32KHZ")
+                    implies (CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "FLL")
+                }
+
+                legal_values { "INT_RC_32KHZ" "EXT_REFCLK" }
+                description "
+                    PLL/FLL oscillators can use one of 3 clock
+                    references: External Reference Clock or Low (32768 Hz)
+                    or High (2MHz) Frequency Internal oscillator"
+            }
+
+            cdl_component CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ {
+                display "Reference frequency."
+                flavor data
+                calculated { is_active (CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT) ?
+                    CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ :
+                    (CYGOPT_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REFSRC
+                     == "INT_RC_32KHZ" ? 32768 : 2000000 )
+                }
+            }
+
+            cdl_component CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_FLL {
+                display "FLL oscillator"
+                flavor none
+                no_define
+                active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "FLL" ||
+                    CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "PLL" ||
+                    CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "EXT_REFCLK"
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE {
+                    display "Reference frequency range"
+                    flavor data
+                    legal_values 0 1 2
+                    calculated {
+                        CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ > 8000000 ? 2 :
+                        CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ >= 1000000 ? 1 :
+                        ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ >= 32000) &&
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ <= 40000)) ? 0 :
+                        -1
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV {
+                    display "Calculated FLL divider"
+                    flavor data
+                    calculated {
+                        CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE >= 1 ?
+                        ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ+32768*16) / (32768*32)) :
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE == 0 ?
+                         ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ+16384) / 32768) : -1)
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV_REG {
+                    display "FLL divider register value"
+                    flavor data
+                    legal_values 0 1 2 3 4 5 6 7
+                    default_value {
+                        CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE == 0 ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV/2) :
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV/2) <= 5 ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV/2) : 5
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS {
+                    display "DCO Range Select"
+                    flavor data
+                    legal_values 0 1 2 3
+                    default_value {
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP) >= 80000000 ? 3 :
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP) >= 60000000 ? 2 :
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP) >= 40000000 ? 1 : 0
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_MCG_DCO_DMX32 {
+                    display "DCO max. frequency with 32768 reference"
+                    flavor data
+                    legal_values 0 0x80
+                    default_value {
+                        ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP == 96000000) ||
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP == 72000000) ||
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP == 48000000) ||
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP == 24000000)) ?
+                        0x80 : 0x00
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_MCG_DCO_FLL_FACT {
+                    display "FLL factor"
+                    flavor data
+                    calculated {
+                        (CYGNUM_HAL_CORTEXM_MCG_DCO_DMX32 == 0x80) ?
+                        ((CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 0 ) ?  732 :
+                         (CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 1 ) ? 1464 :
+                         (CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 2 ) ? 2197 : 2929 ) :
+                        ((CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 0 ) ?  640 :
+                         (CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 1 ) ? 1280 :
+                         (CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS == 2 ) ? 1920 : 2560 )
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN {
+                    display "DCO input frequency"
+                    flavor data
+                    calculated { CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ /
+                        ( CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV_REG == 0 ?
+                         ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE == 0) ? 1 : 32 ) :
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV_REG *
+                          ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE == 0) ? 2 : 64)))
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN_CHECK {
+                    display "DCO input frequency check"
+                    flavor data
+                    no_define
+                    legal_values { "OK" "NOK" "not applicable" }
+                    calculated {
+                        CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "FLL" ?
+                        ((CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN >= 31250) &&
+                         (CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN <= 39063) ?
+                         "OK" : "NOK" ) :
+                        "NotApplicable"
+                    }
+                    active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "FLL" }
+                    requires {
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN >= 31250) &&
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN <= 39063)
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_FREQ_AV {
+                    display "FLL output frequency actual value"
+                    flavor data
+                    calculated {CYGNUM_HAL_CORTEXM_KINETIS_MCG_DCO_IN *
+                        CYGNUM_HAL_CORTEXM_MCG_DCO_FLL_FACT }
+                }
+            }
+
+            cdl_component CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL {
+                display "PLL oscillator"
+                flavor none
+                no_define
+                active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "PLL" ||
+                    CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK == "EXT_REFCLK"
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ_X {
+                    display "Phase detector proposed input frequency"
+                    no_define
+                    flavor data
+                    calculated {
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP > 180000000) ?
+                        3800000 :
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP > 110000000) ?
+                        3000000 :
+                        !(CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP % 3) ? 2000000 :
+                        !(CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP % 4) ? 2000000 :
+                        !(CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP % 5) ? 2500000 :
+                        300000
+                    }
+                }
+
+                cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV {
+                    display "PLL External Reference Divider"
+                    flavor data
+                    legal_values 1 to 25
+                    default_value {
+                        CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ_X ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ /
+                         CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ_X ) : -1
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ {
+                    display "Phase detector input frequency"
+                    no_define
+                    flavor data
+                    legal_values 2000000 to 4000000
+                    calculated { CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ /
+                         CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV) : -1
+                    }
+                }
+
+                cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_VDIV {
+                    display "VCO Divider"
+                    flavor data
+                    legal_values 24 to 55
+                    default_value { CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_FREQ_SP /
+                         CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_PLL_INFREQ) : -1
+                    }
+                }
+
+                cdl_option CYGNUM_HAL_CORTEXM_KINETIS_MCG_PLL_FREQ_AV {
+                    display "PLL output frequency actual value"
+                    flavor data
+                    calculated { CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV ?
+                        (CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ /
+                         CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV *
+                         CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_VDIV) : -1
+                    }
+                }
+            }
+        }
+
+        cdl_component CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_INT_RC {
+            display "Internal Reference Clock"
+            flavor data
+            calculated { CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_INT_RC_HI ? 2000000 : 32768 }
+            active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK ==  "INT_REFCLK" }
+
+            cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_INT_RC_HI {
+                display "Use highh frequency internal osc."
+                flavor bool
+                default_value 1
+            }
+        }
+
+        cdl_option CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_EXT_RC {
+            display "External Reference Clock"
+            flavor data
+            calculated CYGHWR_HAL_CORTEXM_KINETIS_MCG_REF_EXT_FREQ
+            active_if { CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK ==  "EXT_REFCLK" }
+        }
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLK_DIST {
+        display "Subsystem clocking"
+        flavor none
+        no_define
+
+        cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_BUS {
+            display "Peripheral bus"
+            flavor data
+            calculated { CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_PER_BUS
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_MAX {
+                display "Frequency limit"
+                flavor data
+                default_value 50000000
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_BUS_SP {
+                display "Calculated value"
+                flavor data
+                default_value {
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ <=
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_MAX ?
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ :
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_MAX
+                }
+                legal_values  0 to CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_MAX
+            }
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_PER_BUS {
+                display "Divider"
+                flavor data
+                legal_values 1 to 16
+
+                default_value { !(CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ %
+                                  CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_BUS_SP)  ?
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_BUS_SP)  :
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_PER_BUS_SP + 1)
+                }
+            }
+        }
+
+        cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH {
+            display "Flash"
+            flavor data
+            calculated { CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLASH
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_MAX {
+                display "Frequency limit"
+                flavor data
+                default_value 25000000
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_SP {
+                display "Calculated value"
+                flavor data
+                default_value {
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ <=
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_MAX ?
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ :
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_MAX
+                }
+                legal_values  0 to CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_MAX
+            }
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLASH {
+                display "Divider"
+                flavor data
+                legal_values 1 to 16
+
+                default_value {
+                    !(CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ %
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_SP)  ?
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_SP)  :
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLASH_SP + 1)
+                }
+            }
+        }
+
+        cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS {
+            display "Flex bus"
+            flavor data
+            calculated { CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLEX_BUS
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_MAX {
+                display "Frequency limit"
+                flavor data
+                default_value 50000000
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_SP {
+                display "Calculated value"
+                flavor data
+                default_value {
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ <=
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_MAX ?
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ :
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_MAX
+                }
+                legal_values  0 to CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_MAX
+            }
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLEX_BUS {
+                display "Divider"
+                flavor data
+                legal_values 1 to 16
+
+                default_value {
+                    !(CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ %
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_SP)  ?
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_SP)  :
+                    (CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_FLEX_BUS_SP + 1)
+                }
+            }
+        }
+
+
+        cdl_component CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB {
+            display "USB clock"
+            flavor data
+            calculated { CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN *
+                CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC /
+                CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_DIV
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_MAX {
+                display "Frequency limit"
+                flavor data
+                default_value 48000000
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC {
+                display "Fractional Divider"
+                flavor data
+                legal_values 1 to 2
+                default_value {
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ <
+                    CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_MAX ? 1 :
+                    ((CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN) >
+                     (CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP * 4) ? 1 :
+                     (CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN %
+                      CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP ? 2 : 1))
+                }
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_DIV {
+                display "Divider"
+                flavor data
+                legal_values 1 to 8
+                default_value { !((CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN *
+                                   CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC) %
+                                   CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP)  ?
+                    (CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN *
+                     CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC /
+                     CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP)  :
+                    ((CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN *
+                      CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC /
+                      CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP) +1)
+                }
+            }
+
+            cdl_option CYGNUM_HAL_CORTEXM_KINETIS_CLK_USB_IN {
+                display "USB divider input frequency"
+                flavor data
+                calculated {
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCGOUT_FREQ
+                }
+            }
+
+            cdl_option CYGHWR_HAL_CORTEXM_KINETIS_CLK_USB_SP {
+                display "Desired"
+                flavor data
+                calculated 48000000
+            }
+        }
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_TRACECLK {
+            display "Trace clock source"
+            flavor data
+            default_value { "CORE" }
+            legal_values { "CORE" "MCGOUT" }
+
+        }
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_TRACE_CLKOUT {
+            display "Enable Trace Clock out"
+            flavor bool
+            default_value 0
+        }
+    }
+
+    cdl_interface CYGINT_HAL_CORTEXM_KINETIS_RTC {
+    }
+
+    cdl_component CYGHWR_HAL_CORTEXM_KINETIS_RTC {
+        display "Real Time Clock"
+        flavor bool
+        default_value CYGINT_HAL_CORTEXM_KINETIS_RTC
+
+
+        cdl_option CYGHWR_HAL_CORTEXM_KINETIS_RTC_OSC_CAP {
+            display "RTC XTAL parallel C \[pF\]"
+            flavor data
+            legal_values { 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28
+                30 32 }
+            default_value 0
+            description "
+                The Real Time Clock oscillator has 4 capacitors that
+                combined produce capacitance in parallel to the crystal."
+        }
+    }
+
+# EOF kinetis_clocking.cdl
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/hal_cache.h
@@ -0,0 +1,192 @@
+#ifndef CYGONCE_HAL_CACHE_H
+#define CYGONCE_HAL_CACHE_H
+//=============================================================================
+//
+//      hal_cache.h
+//
+//      HAL cache control API
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 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):    jlarmour
+// Contributors: 
+// Date:         2004-07-23
+// Purpose:      Cache control API
+// Description:  The macros defined here provide the HAL APIs for handling
+//               cache control operations.
+//
+//               For Kinetis, for the time being these are empty macros.
+// Usage:
+//               #include <cyg/hal/hal_cache.h>
+//               ...
+//              
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <cyg/infra/cyg_type.h>
+
+//-----------------------------------------------------------------------------
+// Cache dimensions
+
+// Data cache
+//#define HAL_DCACHE_SIZE                 0    // Size of data cache in bytes
+//#define HAL_DCACHE_LINE_SIZE            0    // Size of a data cache line
+//#define HAL_DCACHE_WAYS                 0    // Associativity of the cache
+
+// Instruction cache
+//#define HAL_ICACHE_SIZE                 0    // Size of cache in bytes
+//#define HAL_ICACHE_LINE_SIZE            0    // Size of a cache line
+//#define HAL_ICACHE_WAYS                 0    // Associativity of the cache
+
+//#define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS))
+//#define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS))
+
+//-----------------------------------------------------------------------------
+// Global control of data cache
+
+// Enable the data cache
+#define HAL_DCACHE_ENABLE()
+
+// Disable the data cache
+#define HAL_DCACHE_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_DCACHE_INVALIDATE_ALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_DCACHE_SYNC()
+
+// Purge contents of data cache
+#define HAL_DCACHE_PURGE_ALL()
+
+// Query the state of the data cache (does not affect the caching)
+#define HAL_DCACHE_IS_ENABLED(_state_)          \
+    CYG_MACRO_START                             \
+    (_state_) = 0;                              \
+    CYG_MACRO_END
+
+// Set the data cache refill burst size
+//#define HAL_DCACHE_BURST_SIZE(_size_)
+
+// Set the data cache write mode
+//#define HAL_DCACHE_WRITE_MODE( _mode_ )
+
+//#define HAL_DCACHE_WRITETHRU_MODE       0
+//#define HAL_DCACHE_WRITEBACK_MODE       1
+
+// Load the contents of the given address range into the data cache
+// and then lock the cache so that it stays there.
+//#define HAL_DCACHE_LOCK(_base_, _size_)
+
+// Undo a previous lock operation
+//#define HAL_DCACHE_UNLOCK(_base_, _size_)
+
+// Unlock entire cache
+//#define HAL_DCACHE_UNLOCK_ALL()
+
+//-----------------------------------------------------------------------------
+// Data cache line control
+
+// Allocate cache lines for the given address range without reading its
+// contents from memory.
+//#define HAL_DCACHE_ALLOCATE( _base_ , _size_ )
+
+// Write dirty cache lines to memory and invalidate the cache entries
+// for the given address range.
+//#define HAL_DCACHE_FLUSH( _base_ , _size_ )
+
+// Invalidate cache lines in the given range without writing to memory.
+//#define HAL_DCACHE_INVALIDATE( _base_ , _size_ )
+
+// Write dirty cache lines to memory for the given address range.
+//#define HAL_DCACHE_STORE( _base_ , _size_ )
+
+// Preread the given range into the cache with the intention of reading
+// from it later.
+//#define HAL_DCACHE_READ_HINT( _base_ , _size_ )
+
+// Preread the given range into the cache with the intention of writing
+// to it later.
+//#define HAL_DCACHE_WRITE_HINT( _base_ , _size_ )
+
+// Allocate and zero the cache lines associated with the given range.
+//#define HAL_DCACHE_ZERO( _base_ , _size_ )
+
+//-----------------------------------------------------------------------------
+// Global control of Instruction cache
+
+// Enable the instruction cache
+#define HAL_ICACHE_ENABLE()
+
+// Disable the instruction cache
+#define HAL_ICACHE_DISABLE()
+
+// Invalidate the entire cache
+#define HAL_ICACHE_INVALIDATE_ALL()
+
+// Synchronize the contents of the cache with memory.
+#define HAL_ICACHE_SYNC()
+
+// Query the state of the instruction cache (does not affect the caching)
+#define HAL_ICACHE_IS_ENABLED(_state_)          \
+    CYG_MACRO_START                             \
+    (_state_) = 0;                              \
+    CYG_MACRO_END
+
+// Set the instruction cache refill burst size
+//#define HAL_ICACHE_BURST_SIZE(_size_)
+
+// Load the contents of the given address range into the instruction cache
+// and then lock the cache so that it stays there.
+//#define HAL_ICACHE_LOCK(_base_, _size_)
+
+// Undo a previous lock operation
+//#define HAL_ICACHE_UNLOCK(_base_, _size_)
+
+// Unlock entire cache
+//#define HAL_ICACHE_UNLOCK_ALL()
+
+//-----------------------------------------------------------------------------
+// Instruction cache line control
+
+// Invalidate cache lines in the given range without writing to memory.
+//#define HAL_ICACHE_INVALIDATE( _base_ , _size_ )
+
+//-----------------------------------------------------------------------------
+#endif // ifndef CYGONCE_HAL_CACHE_H
+// End of hal_cache.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/hal_diag.h
@@ -0,0 +1,92 @@
+#ifndef CYGONCE_HAL_DIAG_H
+#define CYGONCE_HAL_DIAG_H
+//=============================================================================
+//
+//      hal_diag.h
+//
+//      HAL diagnostics
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):      nickg
+// Contributor(s): ilijak
+// Date:           2011-02-05
+// Purpose:        HAL diagnostics
+// Description: 
+// Usage:          #include <cyg/hal/var_io.h>
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+
+#include <cyg/infra/cyg_type.h>
+
+#include <cyg/hal/hal_if.h>
+
+//-----------------------------------------------------------------------------
+
+#if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+#define HAL_DIAG_INIT()          hal_if_diag_init()
+#define HAL_DIAG_WRITE_CHAR(_c_) hal_if_diag_write_char(_c_)
+#define HAL_DIAG_READ_CHAR(_c_)  hal_if_diag_read_char(&_c_)
+
+#else
+
+__externC void hal_plf_diag_init(void);
+__externC void hal_plf_diag_putc(char);
+__externC cyg_uint8 hal_plf_diag_getc(void);
+
+# ifndef HAL_DIAG_INIT
+#  define HAL_DIAG_INIT() hal_plf_diag_init()
+# endif
+
+# ifndef HAL_DIAG_WRITE_CHAR
+#  define HAL_DIAG_WRITE_CHAR(__c) hal_plf_diag_putc(__c)
+# endif
+
+# ifndef HAL_DIAG_READ_CHAR
+#  define HAL_DIAG_READ_CHAR(__c) (__c) = hal_plf_diag_getc()
+# endif
+
+#endif
+
+
+//-----------------------------------------------------------------------------
+// end of hal_diag.h
+#endif // CYGONCE_HAL_DIAG_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_rom.h
@@ -0,0 +1,26 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_sram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_ram (0x20000000)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_flash (0x00000000)
+#define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
+#define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_rom.ldi
@@ -0,0 +1,45 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    sram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE
+    ram  : ORIGIN = 0x20000000, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (flash, 0x00000000, LMA_EQ_VMA)
+    USER_SECTION(kinetis_misc, flash, ALIGN (0x8), LMA_EQ_VMA)
+
+    // Kinetis FLASH configuration field. Must be present at 0x00000400
+    // Warning: Omitting FLASH configuration field or moving it to
+    //          other location may lock Kinetis controller.
+    // See src/kinetis_mis.c for definition
+
+    .flash_conf 0x00000400 : { KEEP (*(.flash_conf)) } > flash
+
+    SECTION_RELOCS (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (flash, ALIGN (0x8), LMA_EQ_VMA)
+    USER_SECTION (code_sram, sram, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE (NOLOAD), LMA_EQ_VMA)
+    SECTION_data (ram, 0x20000400, FOLLOWING (.got))
+    SECTION_sram (ram, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_sram.h
@@ -0,0 +1,22 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_sram_l (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_l_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_sram_l_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_sram_u (0x20000000)
+#define CYGMEM_REGION_sram_u_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_u_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_sram_u+CYGMEM_REGION_sram_u_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_sram2s_sram.ldi
@@ -0,0 +1,35 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    sram_l  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    sram_u  : ORIGIN = 0x20000000, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (sram_l, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LMA_EQ_VMA)
+    SECTION_RELOCS (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (sram_u, 0x20000000  + 0x400, FOLLOWING (.got))
+    SECTION_sram (sram_u, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (sram_u, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_rom.h
@@ -0,0 +1,22 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_flash (0x00000000)
+#define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
+#define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_rom.ldi
@@ -0,0 +1,43 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (flash, 0x00000000, LMA_EQ_VMA)
+    USER_SECTION(kinetis_misc, flash, ALIGN (0x8), LMA_EQ_VMA)
+
+    // Kinetis FLASH configuration field. Must be present at 0x00000400
+    // Warning: Omitting FLASH configuration field or moving it to
+    //          other location may lock Kinetis controller.
+    // See src/kinetis_mis.c for definition
+
+    .flash_conf 0x00000400 : { KEEP (*(.flash_conf)) } > flash
+
+    SECTION_RELOCS (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (ram, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE + 0x400, FOLLOWING (.got))
+    SECTION_sram (ram, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = 0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE;
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_sram.h
@@ -0,0 +1,18 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flash_unisram_sram.ldi
@@ -0,0 +1,34 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (ram, 0x20000400 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_sram (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = 0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE;
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.h
@@ -0,0 +1,45 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_sram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_ram (0x20000000)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_flash (0x00000000)
+#define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
+#define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
+
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+# define CYGMEM_REGION_flexnvm (0x10000000)
+# define CYGMEM_REGION_flexnvm_SIZE (CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE)
+# define CYGMEM_REGION_flexnvm_ATTR (CYGMEM_REGION_ATTR_R)
+#endif
+
+#if defined(CYGHWR_HAL_CORTEXM_KINETIS_EEE) && CYGHWR_HAL_CORTEXM_KINETIS_EEE
+#  define CYGMEM_REGION_eeeprom0 (0x14000000)
+#  define CYGMEM_REGION_eeeprom0_SIZE (CYGHWR_HAL_KINETIS_EEE0_SIZE)
+#  define CYGMEM_REGION_eeeprom0_ATTR (CYGMEM_REGION_ATTR_R)
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+#  define CYGMEM_REGION_eeeprom1 (0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE )
+#  define CYGMEM_REGION_eeeprom1_SIZE (CYGHWR_HAL_KINETIS_EEE1_SIZE)
+#  define CYGMEM_REGION_eeeprom1_ATTR (CYGMEM_REGION_ATTR_R)
+# endif
+#else
+# define CYGMEM_REGION_flexram (0x14000000)
+# define CYGMEM_REGION_flexram_SIZE (CYGHWR_HAL_KINETIS_FLEXRAM_SIZE)
+# define CYGMEM_REGION_flexram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#endif
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_rom.ldi
@@ -0,0 +1,67 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    sram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE
+    ram  : ORIGIN = 0x20000000, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+    flexnvm : ORIGIN = 0x10000000, LENGTH = CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+#endif
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_EEE
+    eeeprom0 : ORIGIN = 0x14000000, LENGTH = CYGHWR_HAL_KINETIS_EEE0_SIZE
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+    eeeprom1 : ORIGIN = 0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE, LENGTH = CYGHWR_HAL_KINETIS_EEE1_SIZE
+# endif
+#else
+    flexram : ORIGIN = 0x14000000, LENGTH = CYGHWR_HAL_KINETIS_FLEXRAM_SIZE
+#endif
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (flash, 0x00000000, LMA_EQ_VMA)
+    USER_SECTION(kinetis_misc, flash, ALIGN (0x8), LMA_EQ_VMA)
+
+    // Kinetis FLASH configuration field. Must be present at 0x00000400
+    // Warning: Omitting FLASH configuration field or moving it to
+    //          other location may lock Kinetis controller.
+    // See src/kinetis_mis.c for definition
+
+    .flash_conf 0x00000400 : { KEEP (*(.flash_conf)) } > flash
+
+    SECTION_RELOCS (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (flash, ALIGN (0x8), LMA_EQ_VMA)
+    USER_SECTION (code_sram, sram, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE (NOLOAD), LMA_EQ_VMA)
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+    USER_SECTION(d_flash, flexnvm, 0x10000000 (NOLOAD), LMA_EQ_VMA)
+#endif
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_EEE
+    USER_SECTION(e_eeprom0, eeeprom0, 0x14000000 (NOLOAD), LMA_EQ_VMA)
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+    USER_SECTION(e_eeprom1, eeeprom1, 0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE (NOLOAD), LMA_EQ_VMA)
+# endif
+#else
+    USER_SECTION(flex_ram, flexram, 0x14000000 (NOLOAD), LMA_EQ_VMA)
+#endif
+    SECTION_data (ram, 0x20000400, FOLLOWING (.got))
+    SECTION_sram (ram, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.h
@@ -0,0 +1,22 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_sram_l (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_l_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_sram_l_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_sram_u (0x20000000)
+#define CYGMEM_REGION_sram_u_SIZE (CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_sram_u_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_sram_u+CYGMEM_REGION_sram_u_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_sram2s_sram.ldi
@@ -0,0 +1,35 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    sram_l  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    sram_u  : ORIGIN = 0x20000000, LENGTH = CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (sram_l, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LMA_EQ_VMA)
+    SECTION_RELOCS (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (sram_l, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (sram_u, 0x20000000  + 0x400, FOLLOWING (.got))
+    SECTION_sram (sram_u, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (sram_u, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = (0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.h
@@ -0,0 +1,42 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+
+#define CYGMEM_REGION_ram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#define CYGMEM_REGION_flash (0x00000000)
+#define CYGMEM_REGION_flash_SIZE (CYGHWR_HAL_KINETIS_FLASH_SIZE)
+#define CYGMEM_REGION_flash_ATTR (CYGMEM_REGION_ATTR_R)
+
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+# define CYGMEM_REGION_flexnvm (0x10000000)
+# define CYGMEM_REGION_flexnvm_SIZE (CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE)
+# define CYGMEM_REGION_flexnvm_ATTR (CYGMEM_REGION_ATTR_R)
+#endif
+
+#if defined(CYGHWR_HAL_CORTEXM_KINETIS_EEE) && CYGHWR_HAL_CORTEXM_KINETIS_EEE
+#  define CYGMEM_REGION_eeeprom0 (0x14000000)
+#  define CYGMEM_REGION_eeeprom0_SIZE (CYGHWR_HAL_KINETIS_EEE0_SIZE)
+#  define CYGMEM_REGION_eeeprom0_ATTR (CYGMEM_REGION_ATTR_R)
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+#  define CYGMEM_REGION_eeeprom1 (0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE )
+#  define CYGMEM_REGION_eeeprom1_SIZE (CYGHWR_HAL_KINETIS_EEE1_SIZE)
+#  define CYGMEM_REGION_eeeprom1_ATTR (CYGMEM_REGION_ATTR_R)
+# endif
+#else
+# define CYGMEM_REGION_flexram (0x14000000)
+# define CYGMEM_REGION_flexram_SIZE (CYGHWR_HAL_KINETIS_FLEXRAM_SIZE)
+# define CYGMEM_REGION_flexram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+#endif
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_rom.ldi
@@ -0,0 +1,65 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+    flexnvm : ORIGIN = 0x10000000, LENGTH = CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+#endif
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_EEE
+    eeeprom0 : ORIGIN = 0x14000000, LENGTH = CYGHWR_HAL_KINETIS_EEE0_SIZE
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+    eeeprom1 : ORIGIN = 0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE, LENGTH = CYGHWR_HAL_KINETIS_EEE1_SIZE
+# endif
+#else
+    flexram : ORIGIN = 0x14000000, LENGTH = CYGHWR_HAL_KINETIS_FLEXRAM_SIZE
+#endif
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (flash, 0x00000000, LMA_EQ_VMA)
+    USER_SECTION(kinetis_misc, flash, ALIGN (0x8), LMA_EQ_VMA)
+
+    // Kinetis FLASH configuration field. Must be present at 0x00000400
+    // Warning: Omitting FLASH configuration field or moving it to
+    //          other location may lock Kinetis controller.
+    // See src/kinetis_mis.c for definition
+
+    .flash_conf 0x00000400 : { KEEP (*(.flash_conf)) } > flash
+
+    SECTION_RELOCS (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (flash, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (flash, ALIGN (0x8), LMA_EQ_VMA)
+#ifdef CYGHWR_HAL_KINETIS_FLEXNVM_DFLASH_SIZE
+    USER_SECTION(d_flash, flexnvm, 0x10000000 (NOLOAD), LMA_EQ_VMA)
+#endif
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_EEE
+    USER_SECTION(e_eeprom0, eeeprom0, 0x14000000 (NOLOAD), LMA_EQ_VMA)
+# if CYGHWR_HAL_KINETIS_EEE_SPLIT > 1
+    USER_SECTION(e_eeprom1, eeeprom1, 0x14000000 + CYGHWR_HAL_KINETIS_EEE0_SIZE (NOLOAD), LMA_EQ_VMA)
+# endif
+#else
+    USER_SECTION(flex_ram, flexram, 0x14000000 (NOLOAD), LMA_EQ_VMA)
+#endif
+    SECTION_data (ram, 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE + 0x400, FOLLOWING (.got))
+    SECTION_sram (ram, ALIGN (0x8), FOLLOWING (.data))
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = 0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE;
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.h
@@ -0,0 +1,18 @@
+// eCos memory layout
+
+#ifndef __ASSEMBLER__
+#include <cyg/infra/cyg_type.h>
+#include <stddef.h>
+
+#endif
+#define CYGMEM_REGION_ram (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+#define CYGMEM_REGION_ram_SIZE (CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE)
+#define CYGMEM_REGION_ram_ATTR (CYGMEM_REGION_ATTR_R | CYGMEM_REGION_ATTR_W)
+
+#ifndef __ASSEMBLER__
+extern char CYG_LABEL_NAME (__heap1) [];
+#endif
+#define CYGMEM_SECTION_heap1 (CYG_LABEL_NAME (__heap1))
+#define CYGMEM_SECTION_heap1_SIZE (CYGMEM_REGION_ram+CYGMEM_REGION_ram_SIZE - (size_t) CYG_LABEL_NAME (__heap1))
+
+
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/pkgconf/mlt_kinetis_flexnvm_unisram_sram.ldi
@@ -0,0 +1,34 @@
+// eCos memory layout
+
+#include <pkgconf/hal.h>
+#include <cyg/infra/cyg_type.inc>
+
+MEMORY
+{
+    ram  : ORIGIN = 0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LENGTH = CYGHWR_HAL_KINETIS_SRAM_SIZE-CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
+    flash : ORIGIN = 0x00000000, LENGTH = CYGHWR_HAL_KINETIS_FLASH_SIZE
+}
+
+SECTIONS
+{
+    SECTIONS_BEGIN
+    SECTION_rom_vectors (ram, 0x20000400 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE, LMA_EQ_VMA)
+    SECTION_RELOCS (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_text (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fini (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_rodata1 (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_fixup (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_gcc_except_table (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_eh_frame (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_got (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_data (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_sram (ram, ALIGN (0x8), LMA_EQ_VMA)
+    SECTION_bss (ram, ALIGN (0x8), LMA_EQ_VMA)
+    CYG_LABEL_DEFN(__heap1) = ALIGN (0x8);
+    SECTIONS_END
+}
+
+hal_vsr_table = (0x20000000 - CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE);
+hal_virtual_vector_table = hal_vsr_table + 128*4;
+hal_startup_stack = 0x20000000 + CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE;
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/plf_stub.h
@@ -0,0 +1,88 @@
+#ifndef CYGONCE_HAL_PLF_STUB_H
+#define CYGONCE_HAL_PLF_STUB_H
+//=============================================================================
+//
+//      plf_stub.h
+//
+//      Platform header for GDB stub support.
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2008,
+//               2011 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):   nickg
+// Contributors:jskov, gthomas, jlarmour
+// Date:        2008-07-30
+// Purpose:     Platform HAL stub support for Kinetis variant boards.
+// Usage:       #include <cyg/hal/plf_stub.h>
+//              
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+#include <cyg/infra/cyg_type.h>         // CYG_UNUSED_PARAM
+
+#include <cyg/hal/cortexm_stub.h>           // architecture stub support
+
+#include <cyg/hal/hal_io.h>
+
+//----------------------------------------------------------------------------
+// Define some platform specific communication details. This is mostly
+// handled by hal_if now, but we need to make sure the comms tables are
+// properly initialized.
+
+__externC void cyg_hal_plf_comms_init(void);
+
+#define HAL_STUB_PLATFORM_INIT_SERIAL()       cyg_hal_plf_comms_init()
+
+#define HAL_STUB_PLATFORM_SET_BAUD_RATE(baud) CYG_UNUSED_PARAM(int, (baud))
+#define HAL_STUB_PLATFORM_INTERRUPTIBLE       0
+#define HAL_STUB_PLATFORM_INIT_BREAK_IRQ()    CYG_EMPTY_STATEMENT
+
+//----------------------------------------------------------------------------
+// Stub initializer.
+
+#define HAL_STUB_PLATFORM_INIT()              CYG_EMPTY_STATEMENT
+
+#endif // ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
+
+//-----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_PLF_STUB_H
+// End of plf_stub.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/var_arch.h
@@ -0,0 +1,62 @@
+#ifndef CYGONCE_HAL_VAR_ARCH_H
+#define CYGONCE_HAL_VAR_ARCH_H
+//=============================================================================
+//
+//      var_arch.h
+//
+//      Kinetis variant architecture overrides
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):    nickg, ilijak
+// Date:         2011-02-05
+// Purpose:      Kinetis variant architecture overrides
+// Description: 
+// Usage:        #include <cyg/hal/hal_arch.h>
+//
+//####DESCRIPTIONEND####
+//
+//=============================================================================
+
+#include <pkgconf/hal.h>
+#include <cyg/hal/hal_io.h>
+
+#include <cyg/hal/plf_arch.h>
+
+
+//-----------------------------------------------------------------------------
+// end of var_arch.h
+#endif // CYGONCE_HAL_VAR_ARCH_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/var_intr.h
@@ -0,0 +1,223 @@
+#ifndef CYGONCE_HAL_VAR_INTR_H
+#define CYGONCE_HAL_VAR_INTR_H
+//==========================================================================
+//
+//      var_intr.h
+//
+//      HAL Interrupt and clock assignments for Kinetis variants
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):     ilijak
+// Date:          2011-02-05
+// Purpose:       Define Interrupt support
+// Description:   The interrupt specifics for Freescale Kinetis variants are
+//                defined here.
+//
+// Usage:         #include <cyg/hal/var_intr.h>
+//                However applications should include using <cyg/hal/hal_intr.h>
+//                instead to allow for platform overrides.
+//
+//####DESCRIPTIONEND####
+//
+//==========================================================================
+
+#include <cyg/hal/plf_intr.h>
+
+//==========================================================================
+
+typedef enum {
+    CYGNUM_HAL_INTERRUPT_DMA0
+        = CYGNUM_HAL_INTERRUPT_EXTERNAL,  // DMA Channel 0 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA1,            // DMA Channel 1 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA2,            // DMA Channel 2 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA3,            // DMA Channel 3 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA4,            // DMA Channel 4 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA5,            // DMA Channel 5 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA6,            // DMA Channel 6 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA7,            // DMA Channel 7 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA8,            // DMA Channel 8 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA9,            // DMA Channel 9 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA10,           // DMA Channel 10 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA11,           // DMA Channel 11 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA12,           // DMA Channel 12 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA13,           // DMA Channel 13 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA14,           // DMA Channel 14 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA15,           // DMA Channel 15 Transfer Complete
+    CYGNUM_HAL_INTERRUPT_DMA_ERROR,       // DMA Error Int
+    CYGNUM_HAL_INTERRUPT_MCM,             // Normal Int
+    CYGNUM_HAL_INTERRUPT_FTFL,            // FTFL Int
+    CYGNUM_HAL_INTERRUPT_READ_COLLISION,  // Read Collision Int
+    CYGNUM_HAL_INTERRUPT_LVD_LVW,         // Low Volt Detect, Low Volt Warn
+    CYGNUM_HAL_INTERRUPT_LLW,             // Low Leakage Wakeup
+    CYGNUM_HAL_INTERRUPT_WDOG,            // WDOG Int
+    CYGNUM_HAL_INTERRUPT_RNGB,            // RNGB Int
+    CYGNUM_HAL_INTERRUPT_I2C0,            // I2C0 int
+    CYGNUM_HAL_INTERRUPT_I2C1,            // I2C1 int
+    CYGNUM_HAL_INTERRUPT_SPI0,            // SPI0 Int
+    CYGNUM_HAL_INTERRUPT_SPI1,            // SPI1 Int
+    CYGNUM_HAL_INTERRUPT_SPI2,            // SPI2 Int
+    CYGNUM_HAL_INTERRUPT_CAN0_ORED_MESSAGE_BUFFER,// CAN0 OR'd Msg Buffs Int
+    CYGNUM_HAL_INTERRUPT_CAN0_BUS_OFF,    // CAN0 Bus Off Int
+    CYGNUM_HAL_INTERRUPT_CAN0_ERROR,      // CAN0 Error Int
+    CYGNUM_HAL_INTERRUPT_CAN0_TX_WARNING, // CAN0 Tx Warning Int
+    CYGNUM_HAL_INTERRUPT_CAN0_RX_WARNING, // CAN0 Rx Warning Int
+    CYGNUM_HAL_INTERRUPT_CAN0_WAKE_UP,    // CAN0 Wake Up Int
+    CYGNUM_HAL_INTERRUPT_CAN0_IMEU,       // CAN0 Ind. Match El Update (IMEU) Int
+    CYGNUM_HAL_INTERRUPT_CAN0_LOST_RX,    // CAN0 Lost Receive Int
+    CYGNUM_HAL_INTERRUPT_CAN1_ORED_MESSAGE_BUFFER, // CAN1 OR'd Msg Buffs Int
+    CYGNUM_HAL_INTERRUPT_CAN1_BUS_OFF,     // CAN1 Bus Off Int
+    CYGNUM_HAL_INTERRUPT_CAN1_ERROR,      // CAN1 Error Int
+    CYGNUM_HAL_INTERRUPT_CAN1_TX_WARNING, // CAN1 Tx Warning Int
+    CYGNUM_HAL_INTERRUPT_CAN1_RX_WARNING, // CAN1 Rx Warning Int
+    CYGNUM_HAL_INTERRUPT_CAN1_WAKE_UP,    // CAN1 Wake Up Int
+    CYGNUM_HAL_INTERRUPT_CAN1_IMEU,       // CAN1 Ind. Match El Update (IMEU) Int
+    CYGNUM_HAL_INTERRUPT_CAN1_LOST_RX,    // CAN1 Lost Receive Int
+    CYGNUM_HAL_INTERRUPT_UART0_RX_TX,     // UART0 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART0_ERR,       // UART0 Error int
+    CYGNUM_HAL_INTERRUPT_UART1_RX_TX,     // UART1 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART1_ERR,       // UART1 Error int
+    CYGNUM_HAL_INTERRUPT_UART2_RX_TX,     // UART2 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART2_ERR,       // UART2 Error int
+    CYGNUM_HAL_INTERRUPT_UART3_RX_TX,     // UART3 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART3_ERR,       // UART3 Error int
+    CYGNUM_HAL_INTERRUPT_UART4_RX_TX,     // UART4 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART4_ERR,       // UART4 Error int
+    CYGNUM_HAL_INTERRUPT_UART5_RX_TX,     // UART5 Receive/Transmit int
+    CYGNUM_HAL_INTERRUPT_UART5_ERR,       // UART5 Error int
+    CYGNUM_HAL_INTERRUPT_ADC0,            // ADC0 int
+    CYGNUM_HAL_INTERRUPT_ADC1,            // ADC1 int
+    CYGNUM_HAL_INTERRUPT_CMP0,            // CMP0 int
+    CYGNUM_HAL_INTERRUPT_CMP1,            // CMP1 int
+    CYGNUM_HAL_INTERRUPT_CMP2,            // CMP2 int
+    CYGNUM_HAL_INTERRUPT_FTM0,            // FTM0 fault, overflow and channels int
+    CYGNUM_HAL_INTERRUPT_FTM1,            // FTM1 fault, overflow and channels int
+    CYGNUM_HAL_INTERRUPT_FTM2,            // FTM2 fault, overflow and channels int
+    CYGNUM_HAL_INTERRUPT_CMT,             // CMT int
+    CYGNUM_HAL_INTERRUPT_RTC,             // RTC int
+    CYGNUM_HAL_INTERRUPT_Reserved83,      // Reserved int 83
+    CYGNUM_HAL_INTERRUPT_PIT0,            // PIT timer channel 0 int
+    CYGNUM_HAL_INTERRUPT_PIT1,            // PIT timer channel 1 int
+    CYGNUM_HAL_INTERRUPT_PIT2,            // PIT timer channel 2 int
+    CYGNUM_HAL_INTERRUPT_PIT3,            // PIT timer channel 3 int
+    CYGNUM_HAL_INTERRUPT_PDB0,            // PDB0 Int
+    CYGNUM_HAL_INTERRUPT_USB0,            // USB0 int
+    CYGNUM_HAL_INTERRUPT_USBDCD,          // USBDCD Int
+    CYGNUM_HAL_INTERRUPT_ENET_1588_TIMER, // ENET MAC IEEE 1588 Timer Int
+    CYGNUM_HAL_INTERRUPT_ENET_TRANSMIT,   // ENET MAC Transmit Int
+    CYGNUM_HAL_INTERRUPT_ENET_RECEIVE,    // ENET MAC Receive Int
+    CYGNUM_HAL_INTERRUPT_ENET_ERROR,      // ENET MAC Error and miscelaneous Int
+    CYGNUM_HAL_INTERRUPT_I2S0,            // I2S0 Int
+    CYGNUM_HAL_INTERRUPT_SDHC,            // SDHC Int
+    CYGNUM_HAL_INTERRUPT_DAC0,            // DAC0 int
+    CYGNUM_HAL_INTERRUPT_DAC1,            // DAC1 int
+    CYGNUM_HAL_INTERRUPT_TSI0,            // TSI0 Int
+    CYGNUM_HAL_INTERRUPT_MCG,             // MCG Int
+    CYGNUM_HAL_INTERRUPT_LPTIMER,         // LPTimer int
+    CYGNUM_HAL_INTERRUPT_LCD,             // Segment LCD int
+    CYGNUM_HAL_INTERRUPT_PORTA,           // Port A int
+    CYGNUM_HAL_INTERRUPT_PORTB,           // Port B int
+    CYGNUM_HAL_INTERRUPT_PORTC,           // Port C int
+    CYGNUM_HAL_INTERRUPT_PORTD,           // Port D int
+    CYGNUM_HAL_INTERRUPT_PORTE,           // Port E int
+    CYGNUM_HAL_INTERRUPT_Reserved108,     // Reserved int 108
+    CYGNUM_HAL_INTERRUPT_Reserved109,     // Reserved int 109
+    CYGNUM_HAL_INTERRUPT_Reserved110,     // Reserved int 110
+    CYGNUM_HAL_INTERRUPT_Reserved111,     // Reserved int 111
+    CYGNUM_HAL_INTERRUPT_Reserved112,     // Reserved int 112
+    CYGNUM_HAL_INTERRUPT_Reserved113,     // Reserved int 113
+    CYGNUM_HAL_INTERRUPT_Reserved114,     // Reserved int 114
+    CYGNUM_HAL_INTERRUPT_Reserved115,     // Reserved int 115
+    CYGNUM_HAL_INTERRUPT_Reserved116,     // Reserved int 116
+    CYGNUM_HAL_INTERRUPT_Reserved117,     // Reserved int 117
+    CYGNUM_HAL_INTERRUPT_Reserved118,     // Reserved int 118
+    CYGNUM_HAL_INTERRUPT_Reserved119      // Reserved int 119
+} KinetisExtInterrupt_e;
+
+#define CYGNUM_HAL_INTERRUPT_NVIC_MAX (CYGNUM_HAL_INTERRUPT_Reserved119)
+
+#define CYGNUM_HAL_ISR_MIN            0
+#define CYGNUM_HAL_ISR_MAX            CYGNUM_HAL_INTERRUPT_Reserved119
+#define CYGNUM_HAL_ISR_COUNT          (CYGNUM_HAL_ISR_MAX + 1)
+
+#define CYGNUM_HAL_VSR_MIN            0
+#ifndef CYGNUM_HAL_VSR_MAX
+# define CYGNUM_HAL_VSR_MAX           (CYGNUM_HAL_VECTOR_SYS_TICK+ \
+                                       CYGNUM_HAL_INTERRUPT_NVIC_MAX)
+#endif
+
+#define CYGNUM_HAL_VSR_COUNT          (CYGNUM_HAL_VSR_MAX+1)
+
+//==========================================================================
+// Interrupt mask and config for variant-specific devices
+
+// PORT Pin interrupts
+
+#define CYGHWR_HAL_KINETIS_PIN_IRQ_VECTOR(__pin) \
+    (CYGNUM_HAL_INTERRUPT_PORTA + CYGHWR_HAL_KINETIS_PIN_PORT(__pin))
+
+//===========================================================================
+// Interrupt resources exported by HAL to device drivers
+
+// Export Interrupt vectors to serial driver.
+
+#define CYGNUM_IO_SERIAL_FREESCALE_UART0_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART0_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART1_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART1_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART2_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART2_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART3_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART3_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART4_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART4_RX_TX
+#define CYGNUM_IO_SERIAL_FREESCALE_UART5_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_UART5_RX_TX
+
+// Export Interrupt vectors to ENET driver.
+
+#define CYGNUM_FREESCALE_ENET0_1588_TIMER_INT_VECTOR \
+            CYGNUM_HAL_INTERRUPT_ENET_1588_TIMER
+#define CYGNUM_FREESCALE_ENET0_TRANSMIT_INT_VECTOR   \
+            CYGNUM_HAL_INTERRUPT_ENET_TRANSMIT
+#define CYGNUM_FREESCALE_ENET0_RECEIVE_INT_VECTOR    \
+            CYGNUM_HAL_INTERRUPT_ENET_RECEIVE
+#define CYGNUM_FREESCALE_ENET0_ERROR_INT_VECTOR      \
+            CYGNUM_HAL_INTERRUPT_ENET_ERROR
+
+//----------------------------------------------------------------------------
+#endif // CYGONCE_HAL_VAR_INTR_H
+// EOF var_intr.h
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/var_io.h
@@ -0,0 +1,1043 @@
+#ifndef CYGONCE_HAL_VAR_IO_H
+#define CYGONCE_HAL_VAR_IO_H
+//===========================================================================
+//
+//      var_io.h
+//
+//      Variant specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):     Ilija Kocho <ilijak@siva.com.mk>
+// Date:          2011-02-05
+// Purpose:       Kinetis variant specific registers
+// Description:
+// Usage:         #include <cyg/hal/var_io.h>
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+#include <pkgconf/hal_cortexm_kinetis.h>
+
+#include <cyg/hal/plf_io.h>
+
+//===========================================================================
+// Cortex-M architecture
+//---------------------------------------------------------------------------
+//--------------------------------------------------------------------------
+// Cortex-M architecture overrides
+//---------------------------------------------------------------------------
+// VTOR - Vector Table Offset Register
+#ifndef CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM
+# ifdef CYGHWR_HAL_CORTEXM_KINETIS_SRAM_UNIFIED
+#  define CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM  (BIT_(29) - \
+                                             CYGHWR_HAL_KINETIS_SRAM_BANK_SIZE)
+# else
+#  define CYGARC_REG_NVIC_VTOR_TBLBASE_SRAM  BIT_(29)
+# endif
+#endif
+
+//=============================================================================
+// Kinetis system configuration
+//---------------------------------------------------------------------------
+// Utilize Freescale Kinetis flash between startup vectors and 0x400
+// for misc funtions.
+#ifdef CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION
+# define CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR \
+         CYGBLD_ATTRIB_SECTION(".kinetis_misc")
+#else
+# define CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+#endif
+
+//===========================================================================
+// KINETIS FLASH configuration field
+//===========================================================================
+
+// Note: KINETIS FLASH configuration field must be present in Kinetis flash
+//       image and ocupy addresses 0x00000400 to 0x0000040f.
+
+typedef struct cyghwr_hal_kinetis_flash_conf_s {
+    cyg_uint8 backdoor_key[8]; // 0x400 .. 0x407
+    cyg_uint8 fprot[4];        // 0x408 .. 0x40b
+    cyg_uint8 fsec;            // 0x40c
+    cyg_uint8 fopt;            // 0x40d
+    cyg_uint8 feprot;          // 0x40e
+    cyg_uint8 fdprot;          // 0x40f
+} cyghwr_hal_kinetis_flash_conf_t;
+
+__externC const cyghwr_hal_kinetis_flash_conf_t *hal_kinetis_flash_conf_p( void );
+
+//===========================================================================
+// Kinetis Peripherals
+//---------------------------------------------------------------------------
+// Oscillator
+
+#define CYGHWR_HAL_KINETIS_OSC_CR          (0x40065000)
+#define CYGHWR_HAL_KINETIS_OSC_CR_P        ((volatile cyg_uint8*) 0x40065000)
+
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC16P_M      0x01
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC16P_S         0
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC8P_M       0x02
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC8P_S          1
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC4P_M       0x04
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC4P_S          2
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC2P_M       0x08
+#define CYGHWR_HAL_KINETIS_OSC_CR_SC2P_S          3
+#define CYGHWR_HAL_KINETIS_OSC_CR_EREFSTEN_M   0x20
+#define CYGHWR_HAL_KINETIS_OSC_CR_EREFSTEN_S      5
+#define CYGHWR_HAL_KINETIS_OSC_CR_ERCLKEN_M    0x80
+#define CYGHWR_HAL_KINETIS_OSC_CR_ERCLKEN_S       7
+
+//---------------------------------------------------------------------------
+// MCG
+
+typedef volatile struct cyghwr_hal_kinetis_mcg_s {
+    cyg_uint8 c1;      // MCG Control 1 Register
+    cyg_uint8 c2;      // MCG Control 2 Register
+    cyg_uint8 c3;      // MCG Control 3 Register
+    cyg_uint8 c4;      // MCG Control 4 Register
+    cyg_uint8 c5;      // MCG Control 5 Register
+    cyg_uint8 c6;      // MCG Control 6 Register
+    cyg_uint8 status;  // MCG Status Register
+    cyg_uint8 mcg_res0;
+    cyg_uint8 atc;     // MCG Auto Trim Control Register
+    cyg_uint8 mcg_res1;
+    cyg_uint8 atcvh;   // MCG Auto Trim Compare Value High Register
+    cyg_uint8 atcvl;   // MCG Auto Trim Compare Value Low Register
+} cyghwr_hal_kinetis_mcg_t;
+
+#define CYGHWR_HAL_KINETIS_MCG_P  ((cyghwr_hal_kinetis_mcg_t *)0x40064000)
+
+// C1 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C1_IREFSTEN_M    0x01
+#define CYGHWR_HAL_KINETIS_MCG_C1_IREFSTEN_S    0
+#define CYGHWR_HAL_KINETIS_MCG_C1_IRCLKEN_M     0x02
+#define CYGHWR_HAL_KINETIS_MCG_C1_IRCLKEN_S     1
+#define CYGHWR_HAL_KINETIS_MCG_C1_IREFS_M       0x4
+#define CYGHWR_HAL_KINETIS_MCG_C1_IREFS_S       2
+#define CYGHWR_HAL_KINETIS_MCG_C1_FRDIV_M       0x38
+#define CYGHWR_HAL_KINETIS_MCG_C1_FRDIV_S       3
+#define CYGHWR_HAL_KINETIS_MCG_C1_FRDIV(_div_)  \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C1_FRDIV_S, _div_)
+#define CYGHWR_HAL_KINETIS_MCG_C1_CLKS_M        0xC0
+#define CYGHWR_HAL_KINETIS_MCG_C1_CLKS_S        6
+#define CYGHWR_HAL_KINETIS_MCG_C1_CLKS(_clks_)  \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C1_CLKS_S, _clks_)
+enum {
+    CYGHWR_HAL_KINETIS_MCG_C1_CLKS_FLL_PLL,
+    CYGHWR_HAL_KINETIS_MCG_C1_CLKS_INT_REF,
+    CYGHWR_HAL_KINETIS_MCG_C1_CLKS_EXT_REF,
+    CYGHWR_HAL_KINETIS_MCG_C1_CLKS_RESERVED
+};
+// C2 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C2_IRCS_M        0x01
+#define CYGHWR_HAL_KINETIS_MCG_C2_IRCS_S        0
+#define CYGHWR_HAL_KINETIS_MCG_C2_LP_M          0x02
+#define CYGHWR_HAL_KINETIS_MCG_C2_LP_S          1
+#define CYGHWR_HAL_KINETIS_MCG_C2_EREFS_M       0x04
+#define CYGHWR_HAL_KINETIS_MCG_C2_EREFS_S       2
+#define CYGHWR_HAL_KINETIS_MCG_C2_HGO_M         0x08
+#define CYGHWR_HAL_KINETIS_MCG_C2_HGO_S         3
+#define CYGHWR_HAL_KINETIS_MCG_C2_RANGE_M       0x30
+#define CYGHWR_HAL_KINETIS_MCG_C2_RANGE_S       4
+#define CYGHWR_HAL_KINETIS_MCG_C2_RANGE(__v)    \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C2_RANGE_S, __v)
+// C3 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C3_SCTRIM_M      0xFF
+#define CYGHWR_HAL_KINETIS_MCG_C3_SCTRIM_S      0
+#define CYGHWR_HAL_KINETIS_MCG_C3_SCTRIM(__v)   \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C3_SCTRIM_S, __v)
+// C4 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C4_SCFTRIM_M     0x01
+#define CYGHWR_HAL_KINETIS_MCG_C4_SCFTRIM_S     0
+#define CYGHWR_HAL_KINETIS_MCG_C4_FCTRIM_M      0x1E
+#define CYGHWR_HAL_KINETIS_MCG_C4_FCTRIM_S      1
+#define CYGHWR_HAL_KINETIS_MCG_C4_FCTRIM(__v)   \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C4_FCTRIM_S, __v)
+#define CYGHWR_HAL_KINETIS_MCG_C4_DRST_DRS_M    0x60
+#define CYGHWR_HAL_KINETIS_MCG_C4_DRST_DRS_S    5
+#define CYGHWR_HAL_KINETIS_MCG_C4_DRST_DRS(__v) \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C4_DRST_DRS_S, __v)
+#define CYGHWR_HAL_KINETIS_MCG_C4_DMX32_M       0x80
+#define CYGHWR_HAL_KINETIS_MCG_C4_DMX32_S       7
+// C5 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C5_PRDIV_M       0x1F
+#define CYGHWR_HAL_KINETIS_MCG_C5_PRDIV_S       0
+#define CYGHWR_HAL_KINETIS_MCG_C5_PRDIV(__v)    \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C5_PRDIV_S, __v)
+#define CYGHWR_HAL_KINETIS_MCG_C5_PLLSTEN_M     0x20
+#define CYGHWR_HAL_KINETIS_MCG_C5_PLLSTEN_S     5
+#define CYGHWR_HAL_KINETIS_MCG_C5_PLLCLKEN_M    0x40
+#define CYGHWR_HAL_KINETIS_MCG_C5_PLLCLKEN_S    6
+// C6 Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_C6_VDIV_M        0x1F
+#define CYGHWR_HAL_KINETIS_MCG_C6_VDIV_S        0
+#define CYGHWR_HAL_KINETIS_MCG_C6_VDIV(__v)     \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_C6_VDIV_S, __v)
+#define CYGHWR_HAL_KINETIS_MCG_C6_CME_M         0x20
+#define CYGHWR_HAL_KINETIS_MCG_C6_CME_S         5
+#define CYGHWR_HAL_KINETIS_MCG_C6_PLLS_M        0x40
+#define CYGHWR_HAL_KINETIS_MCG_C6_PLLS_S        6
+#define CYGHWR_HAL_KINETIS_MCG_C6_LOLIE_M       0x80
+#define CYGHWR_HAL_KINETIS_MCG_C6_LOLIE_S       7
+// S Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_S_IRCST_M        0x01
+#define CYGHWR_HAL_KINETIS_MCG_S_IRCST_S        0
+#define CYGHWR_HAL_KINETIS_MCG_S_OSCINIT_M      0x02
+#define CYGHWR_HAL_KINETIS_MCG_S_OSCINIT_S      1
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_M        0x0C
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_S        2
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST(__v)     \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_S_CLKST_S, __v)
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_FLL  CYGHWR_HAL_KINETIS_MCG_S_CLKST(0)
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_INT  CYGHWR_HAL_KINETIS_MCG_S_CLKST(1)
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_EXT  CYGHWR_HAL_KINETIS_MCG_S_CLKST(2)
+#define CYGHWR_HAL_KINETIS_MCG_S_CLKST_PLL  CYGHWR_HAL_KINETIS_MCG_S_CLKST(3)
+#define CYGHWR_HAL_KINETIS_MCG_S_IREFST_M       0x10
+#define CYGHWR_HAL_KINETIS_MCG_S_IREFST_S       4
+#define CYGHWR_HAL_KINETIS_MCG_S_PLLST_M        0x20
+#define CYGHWR_HAL_KINETIS_MCG_S_PLLST_S        5
+#define CYGHWR_HAL_KINETIS_MCG_S_LOCK_M         0x40
+#define CYGHWR_HAL_KINETIS_MCG_S_LOCK_S         6
+#define CYGHWR_HAL_KINETIS_MCG_S_LOLS_M         0x80
+#define CYGHWR_HAL_KINETIS_MCG_S_LOLS_S         7
+// ATC Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATMF_M       0x20
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATMF_S       5
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATMS_M       0x40
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATMS_S       6
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATME_M       0x80
+#define CYGHWR_HAL_KINETIS_MCG_ATC_ATME_S       7
+// ATCVH Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_ATCVH_ATCVH_M    0xFF
+#define CYGHWR_HAL_KINETIS_MCG_ATCVH_ATCVH_S    0
+#define CYGHWR_HAL_KINETIS_MCG_ATCVH_ATCVH(__v) \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_ATCVH_ATCVH_S, __v)
+// ATCVL Bit Fields
+#define CYGHWR_HAL_KINETIS_MCG_ATCVL_ATCVL_M    0xFF
+#define CYGHWR_HAL_KINETIS_MCG_ATCVL_ATCVL_S    0
+#define CYGHWR_HAL_KINETIS_MCG_ATCVL_ATCVL(__v) \
+        VALUE_(CYGHWR_HAL_KINETIS_MCG_ATCVL_ATCVL_S, __v)
+
+//---------------------------------------------------------------------------
+// Real Time Clock
+
+typedef volatile struct cyghwr_hal_kinetis_rtc_s {
+    cyg_uint32 tsr;                    // Time Seconds Register
+    cyg_uint32 tpr;                    // Time Prescaler Register
+    cyg_uint32 tar;                    // Time Alarm Register
+    cyg_uint32 tcr;                    // Time Compensation Register
+    cyg_uint32 cr;                     // Control Register
+    cyg_uint32 sr;                     // Status Register
+    cyg_uint32 lr;                     // Lock Register
+    cyg_uint32 ier;                    // Enterrupt Enable Register
+    cyg_uint8  reserved[2016];
+    cyg_uint32 war;                    // Write Access Register
+    cyg_uint32 rar;                    // Read Access Register
+} cyghwr_hal_kinetis_rtc_t;
+
+#define CYGHWR_HAL_KINETIS_RTC_P   ((cyghwr_hal_kinetis_rtc_t *)0x4003D000)
+
+#define CYGHWR_HAL_KINETIS_RTC_TCR_TCR_M (0x000000FF)
+#define CYGHWR_HAL_KINETIS_RTC_TCR_CIR_S 8
+#define CYGHWR_HAL_KINETIS_RTC_TCR_CIR(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_RTC_TCR_CIR_S, _div_)
+#define CYGHWR_HAL_KINETIS_RTC_TCR_CIC_S 16
+#define CYGHWR_HAL_KINETIS_RTC_TCR_TCV_S 24
+
+#define CYGHWR_HAL_KINETIS_RTC_CR_SWR  BIT_(0)
+#define CYGHWR_HAL_KINETIS_RTC_CR_WPE  BIT_(1)
+#define CYGHWR_HAL_KINETIS_RTC_CR_SUP  BIT_(2)
+#define CYGHWR_HAL_KINETIS_RTC_CR_UM   BIT_(3)
+#define CYGHWR_HAL_KINETIS_RTC_CR_OSCE BIT_(8)
+#define CYGHWR_HAL_KINETIS_RTC_CR_CLKO BIT_(9)
+#define CYGHWR_HAL_KINETIS_RTC_CR_SCP \
+        VALUE_(10, (CYGHWR_HAL_CORTEXM_KINETIS_RTC_OSC_CAP/2))
+
+#define CYGHWR_HAL_KINETIS_RTC_SR_TCE BIT_(4)
+#define CYGHWR_HAL_KINETIS_RTC_SR_TAF BIT_(2)
+#define CYGHWR_HAL_KINETIS_RTC_SR_TOF BIT_(1)
+#define CYGHWR_HAL_KINETIS_RTC_SR_TIF BIT_(0)
+
+//---------------------------------------------------------------------------
+// Watch dog
+
+// WDOG - Peripheral register structure
+typedef volatile struct CygHwr_HAL_Kinetis_wdog_s {
+    cyg_uint16 StCtrlH;    // Status and Control Register High
+    cyg_uint16 StCtrlL;    // Status and Control Register Low
+    cyg_uint16 ToValH;     // Time-out Value Register High
+    cyg_uint16 ToValL;     // Time-out Value Register Low
+    cyg_uint16 WinH;       // Window Register High
+    cyg_uint16 WinL;       // Window Register Low
+    cyg_uint16 Refresh;    // Refresh Register
+    cyg_uint16 Unlock;     // Unlock Register
+    cyg_uint16 TmrOutH;    // Timer Output Register High
+    cyg_uint16 TmrOutL;    // Timer Output Register Low
+    cyg_uint16 RstCnt;     // Reset Count Register
+    cyg_uint16 Presc;      // Prescaler Register
+} CygHwr_HAL_Kinetis_wdog_t;
+
+#define CYGHWR_HAL_KINETIS_WDOG_P ((CygHwr_HAL_Kinetis_wdog_t *)0x40052000)
+
+// STCTRLH Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WDOGEN_M          0x0001
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WDOGEN_S          0
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_CLKSRC_M          0x0002
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_CLKSRC_S          1
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_IRQRSTEN_M        0x0004
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_IRQRSTEN_S        2
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WINEN_M           0x0008
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WINEN_S           3
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_ALLOWUPDATE_M     0x0010
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_ALLOWUPDATE_S     4
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_DBGEN_M           0x0020
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_DBGEN_S           5
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_STOPEN_M          0x0040
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_STOPEN_S          6
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WAITEN_M          0x0080
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_WAITEN_S          7
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_STNDBYEN_M        0x0100
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_STNDBYEN_S        8
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_TESTWDOG_M        0x0400
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_TESTWDOG_S        10
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_TESTSEL_M         0x0800
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_TESTSEL_S         11
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_BYTESEL_M         0x3000
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_BYTESEL_S         12
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_BYTESEL(__v)      \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_STCTRLH_BYTESEL_S, __v)
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_DISTESTWDOG_M     0x4000
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLH_DISTESTWDOG_S     14
+// STCTRLL Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLL_INTFLG_M          0x8000
+#define CYGHWR_HAL_KINETIS_WDOG_STCTRLL_INTFLG_S          15
+// TOVALH Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALH_TOVALHIGH_M        0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALH_TOVALHIGH_S        0
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALH_TOVALHIGH(__v)     \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_TOVALH_TOVALHIGH_S, __v)
+// TOVALL Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALL_TOVALLOW_M         0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALL_TOVALLOW_S         0
+#define CYGHWR_HAL_KINETIS_WDOG_TOVALL_TOVALLOW(__v)      \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_TOVALL_TOVALLOW_S, __v)
+// WINH Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_WINH_WINHIGH_M            0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_WINH_WINHIGH_S            0
+#define CYGHWR_HAL_KINETIS_WDOG_WINH_WINHIGH(__v)         \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_WINH_WINHIGH_S, __v)
+// WINL Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_WINL_WINLOW_M             0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_WINL_WINLOW_S             0
+#define CYGHWR_HAL_KINETIS_WDOG_WINL_WINLOW(__v)          \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_WINL_WINLOW_S, __v)
+// REFRESH Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_REFRESH_WDOGREFRESH_M     0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_REFRESH_WDOGREFRESH_S     0
+#define CYGHWR_HAL_KINETIS_WDOG_REFRESH_WDOGREFRESH(__v)  \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_REFRESH_WDOGREFRESH_S, __v)
+// UNLOCK Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_UNLOCK_WDOGUNLOCK_M       0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_UNLOCK_WDOGUNLOCK_S       0
+#define CYGHWR_HAL_KINETIS_WDOG_UNLOCK_WDOGUNLOCK(__v)    \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_UNLOCK_WDOGUNLOCK_S, __v)
+// TMROUTH Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTH_TIMEROUTHIGH_M    0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTH_TIMEROUTHIGH_S    0
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTH_TIMEROUTHIGH(__v) \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_TMROUTH_TIMEROUTHIGH_S, __v)
+// TMROUTL Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTL_TIMEROUTLOW_M     0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTL_TIMEROUTLOW_S     0
+#define CYGHWR_HAL_KINETIS_WDOG_TMROUTL_TIMEROUTLOW(__v)  \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_TMROUTL_TIMEROUTLOW_S, __v)
+// RSTCNT Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_RSTCNT_RSTCNT_M           0xFFFF
+#define CYGHWR_HAL_KINETIS_WDOG_RSTCNT_RSTCNT_S           0
+#define CYGHWR_HAL_KINETIS_WDOG_RSTCNT_RSTCNT(__v)        \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_RSTCNT_RSTCNT_S, __v)
+// PRESC Bit Fields
+#define CYGHWR_HAL_KINETIS_WDOG_PRESC_PRESCVAL_M          0x700
+#define CYGHWR_HAL_KINETIS_WDOG_PRESC_PRESCVAL_S          8
+#define CYGHWR_HAL_KINETIS_WDOG_PRESC_PRESCVAL(__v)       \
+        VALUE(CYGHWR_HAL_KINETIS_WDOG_PRESC_PRESCVAL_S, __v)
+
+#ifndef __ASSEMBLER__
+
+__externC void hal_wdog_unlock(volatile CygHwr_HAL_Kinetis_wdog_t *wdog_p);
+__externC void hal_wdog_disable(void);
+
+#endif // __ASSEMBLER__
+
+//---------------------------------------------------------------------------
+// SIM - System Integration Module
+
+// SIM - Peripheral register structure
+typedef volatile struct cyghwr_hal_kinetis_sim_s {
+    cyg_uint32 sopt1;           // System Options Register 1
+    cyg_uint8  reserved_0[4096];
+    cyg_uint32 sopt2;           // System Options Register 2
+    cyg_uint8  reserved_1[4];
+    cyg_uint32 sopt4;           // System Options Register 4
+    cyg_uint32 sopt5;           // System Options Register 5
+    cyg_uint32 sopt6;           // System Options Register 6
+    cyg_uint32 sopt7;           // System Options Register 7
+    cyg_uint8  Reserved_2[8];
+    cyg_uint32 sdid;            // System Device Identification Register
+    cyg_uint32 scgc1;           // System Clock Gating Control Register 1
+    cyg_uint32 scgc2;           // System Clock Gating Control Register 2
+    cyg_uint32 scgc3;           // System Clock Gating Control Register 3
+    cyg_uint32 scgc4;           // System Clock Gating Control Register 4
+    cyg_uint32 scgc5;           // System Clock Gating Control Register 5
+    cyg_uint32 scgc6;           // System Clock Gating Control Register 6
+    cyg_uint32 scgc7;           // System Clock Gating Control Register 7
+    cyg_uint32 clk_div1;        // System Clock Divider Register 1
+    cyg_uint32 clk_div2;        // System Clock Divider Register 2
+    cyg_uint32 fcfg1;           // Flash Configuration Register 1
+    cyg_uint32 fcfg2;           // Flash Configuration Register 2
+    cyg_uint32 uidh;            // Unique Identification Register High
+    cyg_uint32 uidmh;           // Unique Identification Register Mid-High
+    cyg_uint32 uidml;           // Unique Identification Register Mid Low
+    cyg_uint32 uidl;            // Unique Identification Register Low
+} cyghwr_hal_kinetis_sim_t;
+
+#define CYGHWR_HAL_KINETIS_SIM_P ((cyghwr_hal_kinetis_sim_t *) 0x40047000)
+
+// SOPT1 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_RAMSIZE_M         0xF000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_RAMSIZE_S         12
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_RAMSIZE(__val)    \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT1_RAMSIZE_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_OSC32KSEL_M       0x80000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_OSC32KSEL_S       19
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_MS_M              0x800000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_MS_S              23
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_USBSTBY_M         0x40000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_USBSTBY_S         30
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_USBREGEN_M        0x80000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT1_USBREGEN_S        31
+// SOPT2 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_MCGCLKSEL_M       0x1
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_MCGCLKSEL_S       0
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_FBSL_M            0x300
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_FBSL_S            8
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_FBSL(__val)       \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT2_FBSL_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_CMTUARTPAD_M      0x800
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_CMTUARTPAD_S      11
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_TRACECLKSEL_M     0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_TRACECLKSEL_S     12
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_PLLFLLSEL_M       0x10000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_PLLFLLSEL_S       16
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_USBSRC_M          0x40000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_USBSRC_S          18
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_TIMESRC_M         0x300000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_TIMESRC_S         20
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_TIMESRC(__val)    \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT2_TIMESRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_I2SSRC_M          0x3000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_I2SSRC_S          24
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_I2SSRC(__val)     \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT2_I2SSRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_SDHCSRC_M         0x30000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_SDHCSRC_S         28
+#define CYGHWR_HAL_KINETIS_SIM_SOPT2_SDHCSRC(__val)    \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT2_SDHCSRC_S, __val)
+// SOPT4 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT0_M        0x1
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT0_S        0
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT1_M        0x2
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT1_S        1
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT2_M        0x4
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0FLT2_S        2
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1FLT0_M        0x10
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1FLT0_S        4
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2FLT0_M        0x100
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2FLT0_S        8
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CH0SRC_M      0xC0000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CH0SRC_S      18
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CH0SRC(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CH0SRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CH0SRC_M      0x300000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CH0SRC_S      20
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CH0SRC(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CH0SRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0CLKSEL_M      0x1000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM0CLKSEL_S      24
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CLKSEL_M      0x2000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM1CLKSEL_S      25
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CLKSEL_M      0x4000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT4_FTM2CLKSEL_S      26
+// SOPT5 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0TXSRC_M      0x3
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0TXSRC_S      0
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0TXSRC(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0TXSRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0RXSRC_M      0xC
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0RXSRC_S      2
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0RXSRC(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT5_UART0RXSRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UARTTXSRC_M       0x30
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UARTTXSRC_S       4
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UARTTXSRC(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT5_UARTTXSRC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART1RXSRC_M      0xC0
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART1RXSRC_S      6
+#define CYGHWR_HAL_KINETIS_SIM_SOPT5_UART1RXSRC(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT5_UART1RXSRC_S, __val)
+// SOPT6 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTSEL_M       0x1F000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTSEL_S       24
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTSEL(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTSEL_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTEN_M        0xE0000000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTEN_S        29
+#define CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTEN(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT6_RSTFLTEN_S, __val)
+// SOPT7 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0TRGSEL_M      0xF
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0TRGSEL_S      0
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0TRGSEL(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0TRGSEL_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0PRETRGSEL_M   0x10
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0PRETRGSEL_S   4
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0ALTTRGEN_M    0x80
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC0ALTTRGEN_S    7
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1TRGSEL_M      0xF00
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1TRGSEL_S      8
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1TRGSEL(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1TRGSEL_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1PRETRGSEL_M   0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1PRETRGSEL_S   12
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1ALTTRGEN_M    0x8000
+#define CYGHWR_HAL_KINETIS_SIM_SOPT7_ADC1ALTTRGEN_S    15
+// SDID Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SDID_PINID_M            0xF
+#define CYGHWR_HAL_KINETIS_SIM_SDID_PINID_S            0
+#define CYGHWR_HAL_KINETIS_SIM_SDID_PINID(__val)       \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SDID_PINID_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SDID_FAMID_M            0x70
+#define CYGHWR_HAL_KINETIS_SIM_SDID_FAMID_S            4
+#define CYGHWR_HAL_KINETIS_SIM_SDID_FAMID(__val)       \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SDID_FAMID_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_SDID_REVID_M            0xF000
+#define CYGHWR_HAL_KINETIS_SIM_SDID_REVID_S            12
+#define CYGHWR_HAL_KINETIS_SIM_SDID_REVID(__val)       \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_SDID_REVID_S, __val)
+// SCGC1 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC1_UART4_M           0x400
+#define CYGHWR_HAL_KINETIS_SIM_SCGC1_UART4_S           10
+#define CYGHWR_HAL_KINETIS_SIM_SCGC1_UART5_M           0x800
+#define CYGHWR_HAL_KINETIS_SIM_SCGC1_UART5_S           11
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC1_ALL_M \
+ (CYGHWR_HAL_KINETIS_SIM_SCGC1_UART4_M | CYGHWR_HAL_KINETIS_SIM_SCGC1_UART5_M)
+
+// SCGC2 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_ENET_M            0x1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_ENET_S            0
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC0_M            0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC0_S            12
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC1_M            0x2000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC1_S            13
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC2_ALL_M         \
+            (CYGHWR_HAL_KINETIS_SIM_SCGC2_ENET_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC0_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC2_DAC1_M)
+
+// SCGC3 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_RNGB_M            0x1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_RNGB_S            0
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_FLEXCAN1_M        0x10
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_FLEXCAN1_S        4
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_SPI2_M            0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_SPI2_S            12
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_SDHC_M            0x20000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_SDHC_S            17
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_FTM2_M            0x1000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_FTM2_S            24
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_ADC1_M            0x8000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_ADC1_S            27
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC3_ALL_M             \
+            (CYGHWR_HAL_KINETIS_SIM_SCGC3_RNGB_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC3_FLEXCAN1_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC3_SPI2_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC3_SDHC_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC3_FTM2_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC3_ADC1_M)
+
+// SCGC4 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_EWM_M             0x2
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_EWM_S             1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_CMT_M             0x4
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_CMT_S             2
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C0_M            0x40
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C0_S            6
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C1_M            0x80
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C1_S            7
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART0_M           0x400
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART0_S           10
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART1_M           0x800
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART1_S           11
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART2_M           0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART2_S           12
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART3_M           0x2000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_UART3_S           13
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_USBOTG_M          0x40000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_USBOTG_S          18
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_CMP_M             0x80000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_CMP_S             19
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_VREF_M            0x100000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_VREF_S            20
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_LLWU_M            0x10000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_LLWU_S            28
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC4_ALL_M \
+ (CYGHWR_HAL_KINETIS_SIM_SCGC4_EWM_M |CYGHWR_HAL_KINETIS_SIM_SCGC4_CMT_M |    \
+ CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C0_M |CYGHWR_HAL_KINETIS_SIM_SCGC4_I2C1_M |   \
+ CYGHWR_HAL_KINETIS_SIM_SCGC4_UART0_M | CYGHWR_HAL_KINETIS_SIM_SCGC4_UART1_M |\
+ CYGHWR_HAL_KINETIS_SIM_SCGC4_UART2_M | CYGHWR_HAL_KINETIS_SIM_SCGC4_UART3_M |\
+ CYGHWR_HAL_KINETIS_SIM_SCGC4_USBOTG_M | CYGHWR_HAL_KINETIS_SIM_SCGC4_CMP_M | \
+ CYGHWR_HAL_KINETIS_SIM_SCGC4_VREF_M | CYGHWR_HAL_KINETIS_SIM_SCGC4_LLWU_M)
+
+// SCGC5 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_LPTIMER_M         0x1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_LPTIMER_S         0
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_REGFILE_M         0x2
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_REGFILE_S         1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_TSI_M             0x20
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_TSI_S             5
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTA_M           0x200
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTA_S           9
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTB_M           0x400
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTB_S           10
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTC_M           0x800
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTC_S           11
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTD_M           0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTD_S           12
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTE_M           0x2000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTE_S           13
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC5_ALL_M            \
+            (CYGHWR_HAL_KINETIS_SIM_SCGC5_LPTIMER_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_REGFILE_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_TSI_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTA_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTB_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTC_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTD_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC5_PORTE_M)
+
+// SCGC6 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTFL_M            0x1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTFL_S            0
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_DMAMUX_M          0x2
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_DMAMUX_S          1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FLEXCAN0_M        0x10
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FLEXCAN0_S        4
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_DSPI0_M           0x1000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_DSPI0_S           12
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_SPI1_M            0x2000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_SPI1_S            13
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_I2S_M             0x8000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_I2S_S             15
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_CRC_M             0x40000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_CRC_S             18
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_USBDCD_M          0x200000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_USBDCD_S          21
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_PDB_M             0x400000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_PDB_S             22
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_PIT_M             0x800000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_PIT_S             23
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM0_M            0x1000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM0_S            24
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM1_M            0x2000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM1_S            25
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_ADC0_M            0x8000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_ADC0_S            27
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_RTC_M             0x20000000
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_RTC_S             29
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC6_ALL_M             \
+            (CYGHWR_HAL_KINETIS_SIM_SCGC6_FTFL_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_DMAMUX_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_FLEXCAN0_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_DSPI0_M |    \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_SPI1_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_I2S_M |      \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_CRC_M |      \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_USBDCD_M |   \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_PDB_M |      \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_PIT_M |      \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM0_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_FTM1_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_ADC0_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC6_RTC_M)
+
+// SCGC7 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_FLEXBUS_M         0x1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_FLEXBUS_S         0
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_DMA_M             0x2
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_DMA_S             1
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_MPU_M             0x4
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_MPU_S             2
+
+#define CYGHWR_HAL_KINETIS_SIM_SCGC7_ALL_M            \
+            (CYGHWR_HAL_KINETIS_SIM_SCGC7_FLEXBUS_M | \
+             CYGHWR_HAL_KINETIS_SIM_SCGC7_DMA_M |     \
+             CYGHWR_HAL_KINETIS_SIM_SCGC7_MPU_M)
+
+// CLKDIV1 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV4_M       0xF0000
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV4_S       16
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV4(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV4_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV3_M       0xF00000
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV3_S       20
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV3(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV3_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV2_M       0xF000000
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV2_S       24
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV2(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV2_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV1_M       0xF0000000
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV1_S       28
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV1(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV1_S, __val)
+// CLKDIV2 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBFRAC_M       0x1
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBFRAC_S       0
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBDIV_M        0xE
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBDIV_S        1
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBDIV(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBDIV_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SFRAC_M       0xFF00
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SFRAC_S       8
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SFRAC(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SFRAC_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SDIV_M        0xFFF00000
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SDIV_S        20
+#define CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SDIV(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_CLKDIV2_I2SDIV_S, __val)
+// FCFG1 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_DEPART_M          0xF00
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_DEPART_S          8
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_DEPART(__val)     \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_FCFG1_DEPART_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_EESIZE_M          0xF0000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_EESIZE_S          16
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_EESIZE(__val)     \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_FCFG1_EESIZE_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_FSIZE_M           0xFF000000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_FSIZE_S           24
+#define CYGHWR_HAL_KINETIS_SIM_FCFG1_FSIZE(__val)      \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_FCFG1_FSIZE_S, __val)
+// FCFG2 Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR1_M        0x3F0000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR1_S        16
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR1(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR1_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_PFLSH_M           0x800000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_PFLSH_S           23
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR0_M        0x3F000000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR0_S        24
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR0(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_FCFG2_MAXADDR0_S, __val)
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_SWAPPFLSH_M       0x80000000
+#define CYGHWR_HAL_KINETIS_SIM_FCFG2_SWAPPFLSH_S       31
+// UIDH Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_UIDH_UID_M              0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_SIM_UIDH_UID_S              0
+#define CYGHWR_HAL_KINETIS_SIM_UIDH_UID(__val)         \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_UIDH_UID_S, __val)
+// UIDMH Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_UIDMH_UID_M             0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_SIM_UIDMH_UID_S             0
+#define CYGHWR_HAL_KINETIS_SIM_UIDMH_UID(__val)        \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_UIDMH_UID_S, __val)
+// UIDML Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_UIDML_UID_M             0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_SIM_UIDML_UID_S             0
+#define CYGHWR_HAL_KINETIS_SIM_UIDML_UID(__val)        \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_UIDML_UID_S, __val)
+// UIDL Bit Fields
+#define CYGHWR_HAL_KINETIS_SIM_UIDL_UID_M              0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_SIM_UIDL_UID_S              0
+#define CYGHWR_HAL_KINETIS_SIM_UIDL_UID(__val)         \
+        VALUE_(CYGHWR_HAL_KINETIS_SIM_UIDL_UID_S, __val)
+
+//---------------------------------------------------------------------------
+// PORT - Peripheral register structure
+
+typedef volatile struct cyghwr_hal_kinetis_port_s {
+    cyg_uint32 pcr[32];      // Pin Control Register n, array
+    cyg_uint32 gpclr;        // Global Pin Control Low Register
+    cyg_uint32 gpchr;        // Global Pin Control High Register
+    cyg_uint8 reserved0[24];
+    cyg_uint32 isfr;         // Interrupt Status Flag Register
+    cyg_uint8 reserved1[28];
+    cyg_uint32 dfer;         // Digital Filter Enable Register
+    cyg_uint32 dfcr;         // Digital Filter Clock Register
+    cyg_uint32 dfwr;         // Digital Filter Width Register
+} cyghwr_hal_kinetis_port_t;
+
+// PORT - Peripheral instance base addresses
+#define CYGHWR_HAL_KINETIS_PORTA_P  (cyghwr_hal_kinetis_port_t *)0x40049000
+#define CYGHWR_HAL_KINETIS_PORTB_P  (cyghwr_hal_kinetis_port_t *)0x4004A000
+#define CYGHWR_HAL_KINETIS_PORTC_P  (cyghwr_hal_kinetis_port_t *)0x4004B000
+#define CYGHWR_HAL_KINETIS_PORTD_P  (cyghwr_hal_kinetis_port_t *)0x4004C000
+#define CYGHWR_HAL_KINETIS_PORTE_P  (cyghwr_hal_kinetis_port_t *)0x4004D000
+
+enum {
+    CYGHWR_HAL_KINETIS_PORTA, CYGHWR_HAL_KINETIS_PORTB,
+    CYGHWR_HAL_KINETIS_PORTC, CYGHWR_HAL_KINETIS_PORTD,
+    CYGHWR_HAL_KINETIS_PORTE
+};
+
+// PCR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PS_M          0x1
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PS_S          0
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PE_M          0x2
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PE_S          1
+#define CYGHWR_HAL_KINETIS_PORT_PCR_SRE_M         0x4
+#define CYGHWR_HAL_KINETIS_PORT_PCR_SRE_S         2
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PFE_M         0x10
+#define CYGHWR_HAL_KINETIS_PORT_PCR_PFE_S         4
+#define CYGHWR_HAL_KINETIS_PORT_PCR_ODE_M         0x20
+#define CYGHWR_HAL_KINETIS_PORT_PCR_ODE_S         5
+#define CYGHWR_HAL_KINETIS_PORT_PCR_DSE_M         0x40
+#define CYGHWR_HAL_KINETIS_PORT_PCR_DSE_S         6
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX_M         0x700
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX_S         8
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX(__val)    \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_PCR_MUX_S, __val)
+#define CYGHWR_HAL_KINETIS_PORT_PCR_LK_M          0x8000
+#define CYGHWR_HAL_KINETIS_PORT_PCR_LK_S          15
+#define CYGHWR_HAL_KINETIS_PORT_PCR_IRQC_M        0xF0000
+#define CYGHWR_HAL_KINETIS_PORT_PCR_IRQC_S        16
+#define CYGHWR_HAL_KINETIS_PORT_PCR_IRQC(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_PCR_IRQC_S, __val)
+#define CYGHWR_HAL_KINETIS_PORT_PCR_ISF_M         0x1000000
+#define CYGHWR_HAL_KINETIS_PORT_PCR_ISF_S         24
+
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX_ANALOG    0
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX_DIS       0
+#define CYGHWR_HAL_KINETIS_PORT_PCR_MUX_GPIO      1
+
+#define CYGHWR_HAL_KINETIS_PIN(__port, __bit, __mux, __cnf) \
+    ((CYGHWR_HAL_KINETIS_PORT##__port << 20) | (__bit << 27) \
+     | CYGHWR_HAL_KINETIS_PORT_PCR_MUX(__mux) | __cnf)
+
+#define CYGHWR_HAL_KINETIS_PIN_PORT(__pin) ((__pin >> 20) & 0x7)
+#define CYGHWR_HAL_KINETIS_PIN_BIT(__pin)  ((__pin >> 27 ) & 0x1f)
+#define CYGHWR_HAL_KINETIS_PIN_FUNC(__pin) (__pin & 0x010f8777)
+#define CYGHWR_HAL_KINETIS_PIN_NONE (0xffffffff)
+
+// GPCLR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWD_M      0xFFFF
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWD_S      0
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWD(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWD_S, __val)
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWE_M      0xFFFF0000
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWE_S      16
+#define CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWE(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_GPCLR_GPWE_S, __val)
+// GPCHR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWD_M      0xFFFF
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWD_S      0
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWD(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWD_S, __val)
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWE_M      0xFFFF0000
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWE_S      16
+#define CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWE(__val) \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_GPCHR_GPWE_S, __val)
+// ISFR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_ISFR_ISF_M        0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_PORT_ISFR_ISF_S        0
+#define CYGHWR_HAL_KINETIS_PORT_ISFR_ISF(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_ISFR_ISF_S, __val)
+// DFER Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_DFER_DFE_M        0xFFFFFFFF
+#define CYGHWR_HAL_KINETIS_PORT_DFER_DFE_S        0
+#define CYGHWR_HAL_KINETIS_PORT_DFER_DFE(__val)   \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_DFER_DFE_S, __val)
+// DFCR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_DFCR_CS_M         0x1
+#define CYGHWR_HAL_KINETIS_PORT_DFCR_CS_S         0
+// DFWR Bit Fields
+#define CYGHWR_HAL_KINETIS_PORT_DFWR_FILT_M       0x1F
+#define CYGHWR_HAL_KINETIS_PORT_DFWR_FILT_S       0
+#define CYGHWR_HAL_KINETIS_PORT_DFWR_FILT(__val)  \
+        VALUE_(CYGHWR_HAL_KINETIS_PORT_DFWR_FILT_S, __val)
+
+#ifndef __ASSEMBLER__
+
+// Pin configuration related functions
+__externC void  hal_set_pin_function(cyg_uint32 pin);
+__externC void  hal_dump_pin_function(cyg_uint32 pin);
+__externC void  hal_dump_pin_setting(cyg_uint32 pin);
+
+#endif
+
+#define HAL_SET_PINS(_pin_array) \
+CYG_MACRO_START \
+    const cyg_uint32 *_pin_p; \
+    for(_pin_p = &_pin_array[0]; \
+        _pin_p < &_pin_array[0] + sizeof(_pin_array)/sizeof(_pin_array[0]); \
+        hal_set_pin_function(*_pin_p++)); \
+CYG_MACRO_END
+
+//---------------------------------------------------------------------------
+// FMC Flash Memory Controller
+
+#define CYGHWR_HAL_KINETIS_FMC_BASE     (0x4001F000)
+#define CYGHWR_HAL_KINETIS_FMC_PFAPR    (CYGHWR_HAL_KINETIS_FMC_BASE)
+#define CYGHWR_HAL_KINETIS_FMC_PFB0CR   (CYGHWR_HAL_KINETIS_FMC_BASE + 4)
+#define CYGHWR_HAL_KINETIS_FMC_PFB1CR   (CYGHWR_HAL_KINETIS_FMC_BASE + 8)
+
+enum {
+    CYGHWR_HAL_KINETIS_FMC_CACHE_W0,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_W1,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_W2,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_W3,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_WAYS
+};
+
+enum {
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S0,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S1,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S2,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S3,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S4,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S5,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S6,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_S7,
+    CYGHWR_HAL_KINETIS_FMC_CACHE_SIDES
+};
+
+#define CYGHWR_HAL_KINETIS_FMC_TAG(__way,__side) \
+          (CYGHWR_HAL_KINETIS_FMC_BASE + 0x100 + __way*0x20 + __side*4)
+#define CYGHWR_HAL_KINETIS_FMC_DATA_U(__way,side) \
+          (CYGHWR_HAL_KINETIS_FMC_BASE + 0x200 + --way*0x20 + __side*8)
+#define CYGHWR_HAL_KINETIS_FMC_DATA_L(__way,side) \
+          (CYGHWR_HAL_KINETIS_FMC_BASE + 0x204 + --way*0x40 + __side*8)
+
+#define CYGHWR_HAL_KINETIS_FMC_PFAPR_MPFD_M(__master) (1 << (__master + 16))
+enum {
+    CYGHWR_HAL_KINETIS_FMC_PFAPR_MAP_NO_ACCESS,
+    CYGHWR_HAL_KINETIS_FMC_PFAPR_MAP_RO,
+    CYGHWR_HAL_KINETIS_FMC_PFAPR_MAP_WO,
+    CYGHWR_HAL_KINETIS_FMC_PFAPR_MAP_RW
+};
+#define CYGHWR_HAL_KINETIS_FMC_PFAPR_MAP(__master, __access) \
+          (__access <<(2 * __master))
+
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_RWSC_M (0xf0000000)
+
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_WAY(__way) ((1 << __way) << 24)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_ALL \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W0) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W1) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W2) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CLCK_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W3)
+
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_WAY(__way) ((1 << __way) << 20)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_ALL \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W0) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W1) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W2) | \
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CINV_WAY(CYGHWR_HAL_KINETIS_FMC_CACHE_W3)
+
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_SBINV (1 << 19)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BMW   (7 << 17)
+
+enum{
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CRC_LRU,
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CRC_res0,
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CRC_IND_LRUW01IF23D,
+    CYGHWR_HAL_KINETIS_FMC_PFBCR_CRC_IND_LRUW02ID3D
+};
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_CRC   (__cache_repl_con) \
+                                       (__cache_repl_con << 5)
+
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BDCE  (0x10)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BICE  (0x08)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BDPE  (0x04)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BIPE  (0x02)
+#define CYGHWR_HAL_KINETIS_FMC_PFBCR_BSEBE (0x01)
+
+//---------------------------------------------------------------------------
+// MPU Memory Protection unit
+
+typedef volatile struct cyghwr_hal_kinetis_mpu_s {
+    cyg_uint32 cesr;          // Control/Error Status Register
+    cyg_uint8 reserved0[12];
+    struct {
+        cyg_uint32 ear;       // Error Address Register, Slave Port n
+        cyg_uint32 edr;       // Error Detail Register, Slave Port n
+    } slave_port[5];
+    cyg_uint8 reserved1[968];
+    struct {  // Region Descriptors, Word 0..Region Descriptor n, Word 3
+        cyg_uint32 word[4];
+    }reg_desc[12];
+    cyg_uint8 reserved2[832];
+    cyg_uint32 reg_daac[12];  // Region Descriptor Alternate Access Control n
+} cyghwr_hal_kinetis_mpu_t;
+
+#define CYGHWR_HAL_KINETIS_MPU_P  (cyghwr_hal_kinetis_mpu_t *)0x4000d000
+
+//---------------------------------------------------------------------------
+// FlexBus
+#ifdef CYGPKG_HAL_CORTEXM_KINETIS_FLEXBUS
+# include <cyg/hal/var_io_flexbus.h>
+#endif
+
+//=============================================================================
+// DEVS:
+// Following macros may also be, and usually are borrwed by some device drivers.
+//-----------------------------------------------------------------------------
+#include <cyg/hal/var_io_devs.h>
+
+// End Peripherals
+
+//-----------------------------------------------------------------------------
+// end of var_io.h
+
+#endif // CYGONCE_HAL_VAR_IO_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/var_io_devs.h
@@ -0,0 +1,148 @@
+#ifndef CYGONCE_HAL_VAR_IO_DEVS_H
+#define CYGONCE_HAL_VAR_IO_DEVS_H
+//===========================================================================
+//
+//      var_io_devs.h
+//
+//      Variant specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):     Ilija Kocho <ilijak@siva.com.mk>
+// Date:          2011-02-05
+// Purpose:       Kinetis variant IO provided to various device drivers
+// Description:
+// Usage:         #include <cyg/hal/var_io.h> //var_io.h includes this file
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+
+//=============================================================================
+// DEVS:
+// Following macros may be, and usually are borrwed by some device drivers.
+//-----------------------------------------------------------------------------
+// Freescale UART
+// Borrow some HAL resources to Freescale UART driver
+// UART  macros are used by both:
+//      src/hal_diag.c
+//      devs/serial/<version>/src/ser_freescale_uart.c
+
+#define CYGADDR_IO_SERIAL_FREESCALE_UART0_BASE  0x4006A000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART1_BASE  0x4006B000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART2_BASE  0x4006C000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART3_BASE  0x4006D000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART4_BASE  0x400EA000
+#define CYGADDR_IO_SERIAL_FREESCALE_UART5_BASE  0x400EB000
+
+// UART PIN configuration
+// Note: May be overriden by plf_io.h
+
+#define CYGHWR_HAL_KINETIS_PORT_PIN_NONE CYGHWR_HAL_KINETIS_PIN_NONE
+
+#ifndef CYGHWR_IO_FREESCALE_UART0_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART0_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART0_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART1_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART1_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART1_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART2_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART2_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART2_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART3_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART3_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART3_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART4_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART4_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART4_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+#ifndef CYGHWR_IO_FREESCALE_UART5_PIN_RX
+# define CYGHWR_IO_FREESCALE_UART5_PIN_RX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_TX CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_RTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+# define CYGHWR_IO_FREESCALE_UART5_PIN_CTS CYGHWR_HAL_KINETIS_PORT_PIN_NONE
+#endif
+
+// Lend some HAL dependent functions to the UART serial device driver
+
+#ifndef __ASSEMBLER__
+
+# define CYGHWR_IO_FREESCALE_UART_BAUD_SET(__uart_p, _baud_) \
+        hal_freescale_uart_setbaud(__uart_p, _baud_)
+
+# define CYGHWR_IO_FREESCALE_UART_PIN(__pin) \
+        hal_set_pin_function(__pin)
+
+// Set baud rate
+__externC void hal_freescale_uart_setbaud( CYG_ADDRESS uart, cyg_uint32 baud );
+
+#endif
+
+//---------------------------------------------------------------------------
+// ENET
+// Lend some HAL dependent functions to the Ethernet device driver
+#define CYGADDR_IO_ETH_FREESCALE_ENET0_BASE  (0x400C0000)
+
+#ifndef __ASSEMBLER__
+
+# define CYGHWR_IO_FREESCALE_ENET_PIN(__pin) \
+        hal_set_pin_function(__pin)
+
+#endif
+
+//-----------------------------------------------------------------------------
+// end of var_io_devs.h
+#endif // CYGONCE_HAL_VAR_IO_DEVS_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/var_io_flexbus.h
@@ -0,0 +1,173 @@
+#ifndef CYGONCE_HAL_VAR_IO_FLEXBUS_H
+#define CYGONCE_HAL_VAR_IO_FLEXBUS_H
+//===========================================================================
+//
+//      var_io_flexbus.h
+//
+//      Kinetis FlexBus specific registers
+//
+//===========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):     Ilija Kocho <ilijak@siva.com.mk>
+// Date:          2011-02-05
+// Purpose:       Kinetis variant specific registers
+// Description:
+// Usage:         #include <cyg/hal/var_io.h>  // var_io.h includes this file
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+
+
+//---------------------------------------------------------------------------
+// FlexBus
+
+// FlexBus chip select control registers
+typedef struct cyghwr_hal_kinetis_fbcs_s{
+    cyg_uint32 csar;    // Chip select address register
+    cyg_uint32 csmr;    // Chip select mask register
+    cyg_uint32 cscr;    // Chip select control register
+} cyghwr_hal_kinetis_fbcs_t;
+
+#define CYGNUM_HAL_KINETIS_FBCS_N 6 // Kinetis has up to 6 chip selects
+
+// FlexBus control
+typedef volatile struct cyghwr_hal_kinetis_fb_s {
+  cyghwr_hal_kinetis_fbcs_t csel[CYGNUM_HAL_KINETIS_FBCS_N]; //Chip Selects
+  cyg_uint8 reserved[24];
+  cyg_uint32 cspmcr;      //Chip select port multiplexing control register
+} cyghwr_hal_kinetis_fb_t;
+
+#define CYGHWR_HAL_KINETIS_FB_P ((cyghwr_hal_kinetis_fb_t *) 0x4000C000)
+
+// CSAR - Chip Select Address Register
+// CSAR Bit Fields
+#define CYGHWR_HAL_FB_CSAR_BA_M        0xFFFF0000
+#define CYGHWR_HAL_FB_CSAR_BA_S        16
+#define CYGHWR_HAL_FB_CS_AR_BA(__val)  VALUE_(CYGHWR_HAL_FB_CSAR_BA_S, __val)
+
+// CSMR - Chup Select Mask Register
+// CSMR Bit Fields
+#define CYGHWR_HAL_FB_CSMR_V_M         0x1
+#define CYGHWR_HAL_FB_CSMR_V_S         0
+#define CYGHWR_HAL_FB_CSMR_WP_M        0x100
+#define CYGHWR_HAL_FB_CSMR_WP_S        8
+#define CYGHWR_HAL_FB_CSMR_BAM_M       0xFFFF0000
+#define CYGHWR_HAL_FB_CSMR_BAM_S       16
+#define CYGHWR_HAL_FB_CS_MR_BAM(__val) VALUE_(CYGHWR_HAL_FB_CSMR_BAM_S, __val)
+
+// CSCR - Chip Select Control register
+// CSCR Bit Fields
+#define CYGHWR_HAL_FB_CSCR_BSTW_M      0x8
+#define CYGHWR_HAL_FB_CSCR_BSTW_S      3
+#define CYGHWR_HAL_FB_CSCR_BSTR_M      0x10
+#define CYGHWR_HAL_FB_CSCR_BSTR_S      4
+#define CYGHWR_HAL_FB_CSCR_BEM_M       0x20
+#define CYGHWR_HAL_FB_CSCR_BEM_S       5
+#define CYGHWR_HAL_FB_CSCR_PS_M        0xC0
+#define CYGHWR_HAL_FB_CSCR_PS_S        6
+#define CYGHWR_HAL_FB_CSCR_AA_M        0x100
+#define CYGHWR_HAL_FB_CSCR_AA_S        8
+#define CYGHWR_HAL_FB_CSCR_BLS_M       0x200
+#define CYGHWR_HAL_FB_CSCR_BLS_S       9
+#define CYGHWR_HAL_FB_CSCR_WS_M        0xFC00
+#define CYGHWR_HAL_FB_CSCR_WS_S        10
+#define CYGHWR_HAL_FB_CSCR_WRAH_M      0x30000
+#define CYGHWR_HAL_FB_CSCR_WRAH_S      16
+#define CYGHWR_HAL_FB_CSCR_RDAH_M      0xC0000
+#define CYGHWR_HAL_FB_CSCR_RDAH_S      18
+#define CYGHWR_HAL_FB_CSCR_ASET_M      0x300000
+#define CYGHWR_HAL_FB_CSCR_ASET_S      20
+#define CYGHWR_HAL_FB_CSCR_EXALE_M     0x400000
+#define CYGHWR_HAL_FB_CSCR_EXALE_S     22
+#define CYGHWR_HAL_FB_CSCR_SWSEN_M     0x800000
+#define CYGHWR_HAL_FB_CSCR_SWSEN_S     23
+#define CYGHWR_HAL_FB_CSCR_SWS_M       0xFC000000
+#define CYGHWR_HAL_FB_CSCR_SWS_S       26
+
+// CSPMCR Bit Fields
+#define CYGHWR_HAL_FB_CSPMCR_G5_M  0xF000
+#define CYGHWR_HAL_FB_CSPMCR_G5_S  12
+#define CYGHWR_HAL_FB_CSPMCR_G4_M  0xF0000
+#define CYGHWR_HAL_FB_CSPMCR_G4_S  16
+#define CYGHWR_HAL_FB_CSPMCR_G3_M  0xF00000
+#define CYGHWR_HAL_FB_CSPMCR_G3_S  20
+#define CYGHWR_HAL_FB_CSPMCR_G2_M  0xF000000
+#define CYGHWR_HAL_FB_CSPMCR_G2_S  24
+#define CYGHWR_HAL_FB_CSPMCR_G1_M  0xF0000000
+#define CYGHWR_HAL_FB_CSPMCR_G1_S  28
+
+// FlexBus control pin multiplexing
+#define CYGHWR_HAL_FB_CSPMCR(__group, __val) VALUE_(__group, __val)
+
+#define CYGHWR_HAL_FB_CSPMCR_G1_ALE \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G1_S, 0)
+#define CYGHWR_HAL_FB_CSPMCR_G1_CS1 \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G1_S, 1)
+#define CYGHWR_HAL_FB_CSPMCR_G1_TS  \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G1_S, 2)
+
+#define CYGHWR_HAL_FB_CSPMCR_G2_CS4      \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G2_S, 0)
+#define CYGHWR_HAL_FB_CSPMCR_G2_TSIZ0    \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G2_S, 1)
+#define CYGHWR_HAL_FB_CSPMCR_G2_BE_31_24 \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G2_S, 2)
+
+#define CYGHWR_HAL_FB_CSPMCR_G3_CS5      \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G3_S, 0)
+#define CYGHWR_HAL_FB_CSPMCR_G3_TSIZ1    \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G3_S, 1)
+#define CYGHWR_HAL_FB_CSPMCR_G3_BE_23_16 \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G3_S, 2)
+
+#define CYGHWR_HAL_FB_CSPMCR_G4_TST      \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G4_S, 0)
+#define CYGHWR_HAL_FB_CSPMCR_G4_CS2      \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G4_S, 1)
+#define CYGHWR_HAL_FB_CSPMCR_G4_BE_15_8  \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G4_S, 2)
+
+#define CYGHWR_HAL_FB_CSPMCR_G5_TA       \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G5_S, 0)
+#define CYGHWR_HAL_FB_CSPMCR_G5_CS3      \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G5_S, 1)
+#define CYGHWR_HAL_FB_CSPMCR_G5_BE_7_0   \
+            CYGHWR_HAL_FB_CSPMCR(CYGHWR_HAL_FB_CSPMCR_G5_S, 2)
+
+//-----------------------------------------------------------------------------
+// end of var_io_flexbus.h
+#endif // CYGONCE_HAL_VAR_IO_FLEXBUS_H
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/include/variant.inc
@@ -0,0 +1,53 @@
+/*==========================================================================
+//
+//      variant.inc
+//
+//      Variant specific asm definitions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):    nickg, ilijak
+// Date:         2011-02-05
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================*/
+
+#include <pkgconf/hal_cortexm_kinetis.h>
+
+//==========================================================================
+// EOF variant.inc
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/src/hal_diag.c
@@ -0,0 +1,407 @@
+/*=============================================================================
+//
+//      hal_diag.c
+//
+//      HAL diagnostic output code
+//
+//=============================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2011 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):   Ilija Kocho <ilijak@siva.com.mk>
+// Contributors:
+// Date:        2011-02-04
+// Purpose:     HAL diagnostic input/output
+// Description: Implementations of HAL diagnostic input/output support.
+//
+//####DESCRIPTIONEND####
+//
+//===========================================================================
+ */
+
+#include <pkgconf/hal.h>
+#include CYGBLD_HAL_PLATFORM_H
+
+#include <cyg/infra/cyg_type.h>         // base types
+
+#include <cyg/hal/hal_arch.h>           // SAVE/RESTORE GP macros
+#include <cyg/hal/hal_io.h>             // IO macros
+#include <cyg/hal/hal_if.h>             // interface API
+#include <cyg/hal/hal_intr.h>           // HAL_ENABLE/MASK/UNMASK_INTERRUPTS
+#include <cyg/hal/hal_misc.h>           // Helper functions
+#include <cyg/hal/drv_api.h>            // CYG_ISR_HANDLED
+#include <cyg/hal/hal_diag.h>
+
+#include <cyg/hal/var_io.h>             //
+#include <cyg/io/ser_freescale_uart.h>  // UART registers
+
+//-----------------------------------------------------------------------------
+
+typedef struct {
+    cyg_uint32 uart;
+    CYG_ADDRESS base;
+    cyg_int32 msec_timeout;
+    cyg_int32 isr_vector;
+    cyg_uint32 rx_pin;
+    cyg_uint32 tx_pin;
+    cyg_int32 baud_rate;
+    cyg_int32 irq_state;
+} channel_data_t;
+
+channel_data_t plf_ser_channels[] = {
+#ifdef CYGINT_HAL_FREESCALE_UART0
+    { 0, CYGADDR_IO_SERIAL_FREESCALE_UART0_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART0_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART0_PIN_RX, CYGHWR_HAL_FREESCALE_UART0_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART1
+    { 1, CYGADDR_IO_SERIAL_FREESCALE_UART1_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART1_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART1_PIN_RX, CYGHWR_HAL_FREESCALE_UART1_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART2
+    { 2, CYGADDR_IO_SERIAL_FREESCALE_UART2_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART2_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART2_PIN_RX, CYGHWR_HAL_FREESCALE_UART2_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART3
+    { 3, CYGADDR_IO_SERIAL_FREESCALE_UART3_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART3_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART3_PIN_RX, CYGHWR_HAL_FREESCALE_UART3_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART4
+    { 4, CYGADDR_IO_SERIAL_FREESCALE_UART4_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART4_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART4_PIN_RX, CYGHWR_HAL_FREESCALE_UART4_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD },
+#endif
+#ifdef CYGINT_HAL_FREESCALE_UART5
+    { 5, CYGADDR_IO_SERIAL_FREESCALE_UART5_BASE, 1000,
+      CYGNUM_HAL_INTERRUPT_UART5_RX_TX,
+      CYGHWR_HAL_FREESCALE_UART5_PIN_RX, CYGHWR_HAL_FREESCALE_UART5_PIN_TX,
+      CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD }
+#endif
+};
+
+#if defined(CYGOPT_HAL_KINETIS_DIAG_IN_MISC_FLASH_SECTION) && \
+        CYGOPT_HAL_KINETIS_DIAG_IN_MISC_FLASH_SECTION
+#  define CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR         \
+        CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+#else
+#  define CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+#endif
+
+//-----------------------------------------------------------------------------
+
+void  CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_putc(void *__ch_data, char c);
+
+
+static void  CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_init_channel(void* __ch_data)
+{
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    CYG_ADDRESS uart_p = chan->base;
+
+    // Configure PORT pins
+    hal_set_pin_function(chan->rx_pin);
+    hal_set_pin_function(chan->tx_pin);
+
+    // 8-1-no parity.
+    HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C1, 0);
+    CYGHWR_IO_FREESCALE_UART_BAUD_SET(uart_p, chan->baud_rate);
+    // Enable RX and TX
+    HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2,
+                    (CYGHWR_DEV_FREESCALE_UART_C2_TE |
+                     CYGHWR_DEV_FREESCALE_UART_C2_RE));
+}
+
+void  CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_putc(void* __ch_data, char ch_out)
+{
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+    cyg_uint32 uart_s1;
+
+    CYGARC_HAL_SAVE_GP();
+
+    do {
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+    } while (!(uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_TDRE));
+
+    HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_out);
+
+    CYGARC_HAL_RESTORE_GP();
+}
+
+static cyg_bool CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_getc_nonblock(void* __ch_data, cyg_uint8* p_ch_in)
+{
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+    cyg_uint8 uart_s1;
+    cyg_uint8 ch_in;
+
+    HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+    if (!(uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_RDRF))
+        return false;
+
+    HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_in);
+    *p_ch_in = ch_in;
+
+    return true;
+}
+
+cyg_uint8 CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_getc(void* __ch_data)
+{
+    cyg_uint8 ch;
+    CYGARC_HAL_SAVE_GP();
+
+    while(!cyg_hal_plf_serial_getc_nonblock(__ch_data, &ch));
+
+    CYGARC_HAL_RESTORE_GP();
+    return ch;
+}
+
+
+//=============================================================================
+// Virtual vector HAL diagnostics
+
+#if defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+static void CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_write(void* __ch_data, const cyg_uint8* __buf,
+                         cyg_uint32 __len)
+{
+    CYGARC_HAL_SAVE_GP();
+
+    while(__len-- > 0)
+        cyg_hal_plf_serial_putc(__ch_data, *__buf++);
+
+    CYGARC_HAL_RESTORE_GP();
+}
+
+static void CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_read(void* __ch_data, cyg_uint8* __buf, cyg_uint32 __len)
+{
+    CYGARC_HAL_SAVE_GP();
+
+    while(__len-- > 0)
+        *__buf++ = cyg_hal_plf_serial_getc(__ch_data);
+
+    CYGARC_HAL_RESTORE_GP();
+}
+
+cyg_bool CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_getc_timeout(void* __ch_data, cyg_uint8* p_ch_in)
+{
+    int delay_count;
+    cyg_bool res;
+    CYGARC_HAL_SAVE_GP();
+
+    // delay in .1 ms steps
+    delay_count = ((channel_data_t*)__ch_data)->msec_timeout * 10;
+
+    for(;;) {
+        res = cyg_hal_plf_serial_getc_nonblock(__ch_data, p_ch_in);
+        if (res || 0 == delay_count--)
+            break;
+
+        CYGACC_CALL_IF_DELAY_US(100);
+    }
+
+    CYGARC_HAL_RESTORE_GP();
+    return res;
+}
+
+static int CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_control(void *__ch_data, __comm_control_cmd_t __func, ...)
+{
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    CYG_ADDRESS uart_p = ((channel_data_t*)__ch_data)->base;
+    cyg_uint8 ser_port_reg;
+    int ret = 0;
+    va_list ap;
+
+    CYGARC_HAL_SAVE_GP();
+    va_start(ap, __func);
+
+    switch (__func) {
+    case __COMMCTL_IRQ_ENABLE:
+        chan->irq_state = 1;
+        HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector);
+        HAL_INTERRUPT_UNMASK(chan->isr_vector);
+
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+        ser_port_reg |= CYGHWR_DEV_FREESCALE_UART_C2_RIE;
+        HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+
+        break;
+    case __COMMCTL_IRQ_DISABLE:
+        ret = chan->irq_state;
+        chan->irq_state = 0;
+        HAL_INTERRUPT_MASK(chan->isr_vector);
+
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+        ser_port_reg &= ~(cyg_uint8)CYGHWR_DEV_FREESCALE_UART_C2_RIE;
+        HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C2, ser_port_reg);
+        break;
+    case __COMMCTL_DBG_ISR_VECTOR:
+        ret = chan->isr_vector;
+        break;
+    case __COMMCTL_SET_TIMEOUT:
+        ret = chan->msec_timeout;
+        chan->msec_timeout = va_arg(ap, cyg_uint32);
+    case __COMMCTL_GETBAUD:
+        ret = chan->baud_rate;
+        break;
+    case __COMMCTL_SETBAUD:
+        chan->baud_rate = va_arg(ap, cyg_int32);
+        // Should we verify this value here?
+        cyg_hal_plf_serial_init_channel(chan);
+        ret = 0;
+        break;
+    default:
+        break;
+    }
+
+    va_end(ap);
+    CYGARC_HAL_RESTORE_GP();
+    return ret;
+}
+
+static int CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_isr(void *__ch_data, int* __ctrlc,
+                       CYG_ADDRWORD __vector, CYG_ADDRWORD __data)
+{
+
+    channel_data_t* chan = (channel_data_t*)__ch_data;
+    CYG_ADDRESS uart_p = (CYG_ADDRESS) chan->base;
+    cyg_uint8 uart_s1;
+    int res = 0;
+    cyg_uint8 ch_in;
+    CYGARC_HAL_SAVE_GP();
+
+    *__ctrlc = 0;
+
+    HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_S1, uart_s1);
+    if (uart_s1 & CYGHWR_DEV_FREESCALE_UART_S1_RDRF) {
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_D, ch_in);
+        if( cyg_hal_is_break( (char *) &ch_in , 1 ) )
+            *__ctrlc = 1;
+
+        res = CYG_ISR_HANDLED;
+    }
+
+    HAL_INTERRUPT_ACKNOWLEDGE(chan->isr_vector);
+
+    CYGARC_HAL_RESTORE_GP();
+    return res;
+}
+
+static void CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_serial_init(void)
+{
+    hal_virtual_comm_table_t* comm;
+    int cur;
+    int chan_i;
+
+    cur = CYGACC_CALL_IF_SET_CONSOLE_COMM(CYGNUM_CALL_IF_SET_COMM_ID_QUERY_CURRENT);
+
+    // Init channels
+    for(chan_i=0; chan_i<CYGNUM_HAL_VIRTUAL_VECTOR_COMM_CHANNELS; chan_i++) {
+        cyg_hal_plf_serial_init_channel(&plf_ser_channels[chan_i]);
+
+        // Setup procs in the vector table
+        CYGACC_CALL_IF_SET_CONSOLE_COMM(chan_i);
+        comm = CYGACC_CALL_IF_CONSOLE_PROCS();
+        CYGACC_COMM_IF_CH_DATA_SET(*comm, &plf_ser_channels[chan_i]);
+        CYGACC_COMM_IF_WRITE_SET(*comm, cyg_hal_plf_serial_write);
+        CYGACC_COMM_IF_READ_SET(*comm, cyg_hal_plf_serial_read);
+        CYGACC_COMM_IF_PUTC_SET(*comm, cyg_hal_plf_serial_putc);
+        CYGACC_COMM_IF_GETC_SET(*comm, cyg_hal_plf_serial_getc);
+        CYGACC_COMM_IF_CONTROL_SET(*comm, cyg_hal_plf_serial_control);
+        CYGACC_COMM_IF_DBG_ISR_SET(*comm, cyg_hal_plf_serial_isr);
+        CYGACC_COMM_IF_GETC_TIMEOUT_SET(*comm, cyg_hal_plf_serial_getc_timeout);
+    }
+    // Restore original console
+    CYGACC_CALL_IF_SET_CONSOLE_COMM(cur);
+#if (CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL_BAUD != CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD)
+    plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL]->baud_rate =
+        CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL_BAUD;
+    update_baud_rate( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_DEBUG_CHANNEL] );
+#endif
+}
+
+void CYGOPT_HAL_KINETIS_DIAG_FLASH_SECTION_ATTR
+cyg_hal_plf_comms_init(void)
+{
+    static int initialized = 0;
+
+    if (initialized)
+        return;
+    initialized = 1;
+    cyg_hal_plf_serial_init();
+}
+
+#else // !defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+//=============================================================================
+// Non-Virtual vector HAL diagnostics
+
+// #if !defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+void hal_plf_diag_init(void)
+{
+    cyg_hal_plf_serial_init( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL] );
+}
+
+void hal_plf_diag_putc(char c)
+{
+    cyg_hal_plf_serial_putc( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL], c);
+}
+
+cyg_uint8 hal_plf_diag_getc(void)
+{
+    return cyg_hal_plf_serial_getc( &plf_ser_channels[CYGNUM_HAL_VIRTUAL_VECTOR_CONSOLE_CHANNEL] );
+}
+
+#endif // defined(CYGSEM_HAL_VIRTUAL_VECTOR_DIAG)
+
+//-----------------------------------------------------------------------------
+// End of hal_diag.c
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/src/kinetis_clocking.c
@@ -0,0 +1,339 @@
+//==========================================================================
+//
+//      kinetis_clocking.c
+//
+//      Cortex-M Kinetis HAL functions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2010 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):    Ilija kocho <ilijak@siva.com.mk>
+// Date:         2011-10-19
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_cortexm.h>
+#include <pkgconf/hal_cortexm_kinetis.h>
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>
+#endif
+
+#include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_type.h>
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+
+#include <cyg/hal/cortexm_endian.h>
+#include <cyg/hal/hal_arch.h>           // HAL header
+#include <cyg/hal/hal_intr.h>           // HAL header
+#include <cyg/hal/hal_if.h>             // HAL header
+
+#include <cyg/io/ser_freescale_uart.h>
+
+//===========================================================================
+// Forward declarations
+//===========================================================================
+
+cyg_uint32 hal_cortexm_systick_clock;
+cyg_uint32 hal_kinetis_sysclk;
+cyg_uint32 hal_kinetis_busclk;
+
+cyg_uint32 hal_get_cpu_clock(void);
+
+void hal_start_main_clock(void);
+void hal_set_clock_dividers(void);
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_RTC
+void hal_start_rtc_clock(void);
+#endif
+
+
+//==========================================================================
+// Setup up system clocks
+//
+// Set up clocks from configuration. In the future this should be extended so
+// that clock rates can be changed at runtime.
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_start_clocks( void )
+{
+    cyghwr_hal_kinetis_sim_t *sim_p = CYGHWR_HAL_KINETIS_SIM_P;
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_TRACE_CLKOUT
+    cyghwr_hal_kinetis_port_t *port_p = CYGHWR_HAL_KINETIS_PORTA_P;
+#endif
+#if !defined(CYG_HAL_STARTUP_RAM)
+# ifdef CYGHWR_HAL_CORTEXM_KINETIS_RTC
+    // Real Time Clock
+    hal_start_rtc_clock();
+# endif
+    // Main clock - MCG
+    hal_start_main_clock();
+#endif
+    hal_kinetis_sysclk=hal_get_cpu_clock();
+    hal_kinetis_busclk=hal_kinetis_sysclk /
+          CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_PER_BUS;
+    hal_cortexm_systick_clock=hal_kinetis_sysclk;
+    // Trace clock
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_TRACECLK_CORE
+    sim_p->sopt2 |= CYGHWR_HAL_KINETIS_SIM_SOPT2_TRACECLKSEL_M;
+#else
+    sim_p->sopt2 &= ~CYGHWR_HAL_KINETIS_SIM_SOPT2_TRACECLKSEL_M;
+#endif
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_TRACE_CLKOUT
+    port_p->pcr[6] = CYGHWR_HAL_KINETIS_PORT_PCR_MUX(0x7);
+#endif
+}
+
+
+#define MCG_WAIT_WHILE(_condition_) do{}while(_condition_)
+
+// Setup MCG
+// Note: Currently only PBE mode is supported and tested.
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_start_main_clock(void)
+{
+    cyghwr_hal_kinetis_mcg_t *mcg_p = CYGHWR_HAL_KINETIS_MCG_P;
+#if defined CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL ||\
+    defined CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_RTC
+    cyghwr_hal_kinetis_sim_t *sim_p = CYGHWR_HAL_KINETIS_SIM_P;
+#endif
+#ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT
+# if defined CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL || \
+    defined CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_OSC
+    volatile cyg_uint8 *osc_cr_p = CYGHWR_HAL_KINETIS_OSC_CR_P;
+# endif
+
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL
+    // Set the main oscillator
+    *osc_cr_p = CYGHWR_HAL_CORTEXM_KINETIS_OSC_CAP / 2;
+# elif defined CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_OSC
+    // Select exteranal oscillator
+    *osc_cr_p = CYGHWR_HAL_KINETIS_OSC_CR_ERCLKEN_M |
+          CYGHWR_HAL_KINETIS_OSC_CR_EREFSTEN_M;
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL
+
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_RTC
+    // Select RTC clock source for MCG reference
+    sim_p->sopt2 |= CYGHWR_HAL_KINETIS_SIM_SOPT2_MCGCLKSEL_M;
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_RTC
+#endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT
+
+#if defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL) || \
+     defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_FLL) || \
+     defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+    // Enter FBE mode
+    mcg_p->c2 = CYGHWR_HAL_KINETIS_MCG_C2_RANGE(
+                    CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FREQ_RANGE)
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL
+          | CYGHWR_HAL_KINETIS_MCG_C2_EREFS_M | CYGHWR_HAL_KINETIS_MCG_C2_HGO_M
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL
+          ;
+    mcg_p->c1 = CYGHWR_HAL_KINETIS_MCG_C1_FRDIV(
+        CYGNUM_HAL_CORTEXM_KINETIS_MCG_REF_FRDIV_REG)
+# if defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL) || \
+      defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+        |CYGHWR_HAL_KINETIS_MCG_C1_CLKS(CYGHWR_HAL_KINETIS_MCG_C1_CLKS_EXT_REF)
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL
+        ;
+
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_XTAL
+    // Wait for oscillator start up
+    MCG_WAIT_WHILE(!(mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_OSCINIT_M));
+# endif
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT
+    // Wait for reference clock to switch to external reference
+    MCG_WAIT_WHILE(mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_IREFST_M);
+    // Wait for status flags update
+    MCG_WAIT_WHILE((mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_CLKST_M) !=
+#  if defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL) || \
+defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+            CYGHWR_HAL_KINETIS_MCG_S_CLKST_EXT
+#  else
+            CYGHWR_HAL_KINETIS_MCG_S_CLKST_FLL
+#  endif
+            );
+# endif //  CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT
+    // Set peripheral dividers before switching to high frequency.
+    hal_set_clock_dividers();
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_FLL
+    // Configure FLL
+    mcg_p->c4 = (mcg_p->c4 & 0x1f) |
+          (CYGNUM_HAL_CORTEXM_MCG_DCO_DMX32 |
+           CYGHWR_HAL_KINETIS_MCG_C4_DRST_DRS(
+               CYGNUM_HAL_CORTEXM_MCG_DCO_DRST_DRS));
+
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_FLL
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL
+    // Configure PLL and enter PBE mode
+    mcg_p->c5 = CYGHWR_HAL_KINETIS_MCG_C5_PRDIV(
+          CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_PRDIV-1) |
+          CYGHWR_HAL_KINETIS_MCG_C5_PLLSTEN_M;
+    mcg_p->c6 = CYGHWR_HAL_KINETIS_MCG_C6_VDIV(
+          CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_PLL_VDIV-24);
+
+    // Switch to PBE mode
+    mcg_p->c6 |=  CYGHWR_HAL_KINETIS_MCG_C6_PLLS_M;
+
+    MCG_WAIT_WHILE((mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_CLKST_M) !=
+                   CYGHWR_HAL_KINETIS_MCG_S_CLKST_EXT);
+    MCG_WAIT_WHILE(!(mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_PLLST_M));
+    MCG_WAIT_WHILE(!(mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_LOCK_M));
+
+    // Enter PEE mode
+    mcg_p->c1 &= ~CYGHWR_HAL_KINETIS_MCG_C1_CLKS_M;
+    MCG_WAIT_WHILE((mcg_p->status & CYGHWR_HAL_KINETIS_MCG_S_CLKST_M) !=
+                   CYGHWR_HAL_KINETIS_MCG_S_CLKST_PLL);
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL
+# if defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL) || \
+     defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+    sim_p->sopt2 |= CYGHWR_HAL_KINETIS_SIM_SOPT2_PLLFLLSEL_M;
+# endif
+
+#endif // defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL) ||
+       // defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_FLL) ||
+       // defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+}
+
+cyg_uint32 CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_get_cpu_clock(void)
+{
+    cyg_uint32 freq;
+#ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_PLL
+    cyghwr_hal_kinetis_mcg_t *mcg_p = CYGHWR_HAL_KINETIS_MCG_P;
+
+    freq = CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_PLL_REF_FREQ /
+          ((mcg_p->c5 & CYGHWR_HAL_KINETIS_MCG_C5_PRDIV_M)+1) *
+          ((mcg_p->c6 & CYGHWR_HAL_KINETIS_MCG_C6_VDIV_M)+24);
+#elif defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_FLL)
+    freq = CYGNUM_HAL_CORTEXM_KINETIS_MCG_FLL_FREQ_AV;
+#elif defined(CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_EXT_REFCLK)
+    freq = CYGOPT_HAL_CORTEXM_KINETIS_MCGOUT_EXT_RC;
+#else // ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_none
+#endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_MCGOUTCLK_end
+
+    return freq;
+}
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_set_clock_dividers(void)
+{
+    cyghwr_hal_kinetis_sim_t *sim_p = CYGHWR_HAL_KINETIS_SIM_P;
+
+    sim_p->clk_div1 = CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV1(0) |
+          CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV2(
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_PER_BUS-1)  |
+          CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV3(
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLEX_BUS-1) |
+          CYGHWR_HAL_KINETIS_SIM_CLKDIV1_OUTDIV4(
+                CYGHWR_HAL_CORTEXM_KINETIS_CLKDIV_FLASH-1);
+
+    sim_p->clk_div2 = CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBDIV(
+                          CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_DIV-1) |
+                          (CYGHWR_HAL_CORTEXM_KINETIS_USBCLK_FRAC==2 ?
+                               CYGHWR_HAL_KINETIS_SIM_CLKDIV2_USBFRAC_M : 0);
+}
+
+#ifdef CYGHWR_HAL_CORTEXM_KINETIS_RTC
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_start_rtc_clock(void)
+{
+    cyghwr_hal_kinetis_rtc_t *rtc_p = CYGHWR_HAL_KINETIS_RTC_P;
+
+    rtc_p->ier=0; // Disable RTC interrupts
+
+    //Start RTC clock if not already started
+    if(!(rtc_p->cr & CYGHWR_HAL_KINETIS_RTC_CR_OSCE)){
+        rtc_p->cr = CYGHWR_HAL_KINETIS_RTC_CR_OSCE |
+              CYGHWR_HAL_CORTEXM_KINETIS_RTC_OSC_CAP;
+# ifdef CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_RTC
+        {
+            volatile cyg_uint32 busycnt;
+            for(busycnt=1000000; busycnt; busycnt--)
+                __asm__ volatile ("nop\n");
+        }
+# endif // CYGOPT_HAL_CORTEXM_KINETIS_MCG_REF_EXT_IS_RTC
+    }
+}
+#endif
+
+
+//==========================================================================
+// UART baud rate
+//
+// Set the baud rate divider of a UART based on the requested rate and
+// the current clock settings.
+
+
+void  CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_freescale_uart_setbaud(cyg_uint32 uart_p, cyg_uint32 baud)
+{
+    cyg_uint32 sbr, brfa;
+    cyg_uint32 regval;
+
+    switch(uart_p) {
+    case CYGADDR_IO_SERIAL_FREESCALE_UART0_BASE:
+    case CYGADDR_IO_SERIAL_FREESCALE_UART1_BASE:
+        sbr = hal_kinetis_sysclk/(16*baud);
+        break;
+    case CYGADDR_IO_SERIAL_FREESCALE_UART2_BASE:
+    case CYGADDR_IO_SERIAL_FREESCALE_UART3_BASE:
+    case CYGADDR_IO_SERIAL_FREESCALE_UART4_BASE:
+    case CYGADDR_IO_SERIAL_FREESCALE_UART5_BASE:
+        sbr = hal_kinetis_busclk/(16*baud);
+        break;
+    default:
+        sbr=0;
+        break;
+    }
+    if(sbr) {
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDH, regval);
+        regval &= 0xE0;
+        regval |= sbr >> 8;
+        HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDH, regval);
+        HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_BDL, (sbr & 0xFF));
+        brfa = (((32*hal_kinetis_busclk)/(16*baud))-(32*sbr));
+        HAL_READ_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C4, regval);
+        regval &= 0xE0;
+        regval |= brfa & 0x1f;
+        HAL_WRITE_UINT8(uart_p + CYGHWR_DEV_FREESCALE_UART_C4, regval);
+    }
+}
+
+//==========================================================================
+// EOF kinetis_clocking.c
new file mode 100644
--- /dev/null
+++ b/packages/hal/cortexm/kinetis/var/current/src/kinetis_misc.c
@@ -0,0 +1,201 @@
+//==========================================================================
+//
+//      kinetis_misc.c
+//
+//      Cortex-M Kinetis HAL functions
+//
+//==========================================================================
+// ####ECOSGPLCOPYRIGHTBEGIN####                                            
+// -------------------------------------------                              
+// This file is part of eCos, the Embedded Configurable Operating System.   
+// Copyright (C) 2010 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):    Ilija kocho <ilijak@siva.com.mk>
+// Date:         2011-02-05
+// Description:
+//
+//####DESCRIPTIONEND####
+//
+//========================================================================
+
+
+#include <pkgconf/hal.h>
+#include <pkgconf/hal_cortexm.h>
+#include <pkgconf/hal_cortexm_kinetis.h>
+#ifdef CYGPKG_KERNEL
+#include <pkgconf/kernel.h>
+#endif
+
+
+#include <cyg/infra/diag.h>
+#include <cyg/infra/cyg_type.h>
+#include <cyg/infra/cyg_trac.h>         // tracing macros
+#include <cyg/infra/cyg_ass.h>          // assertion macros
+
+#include <cyg/hal/cortexm_endian.h>
+#include <cyg/hal/hal_arch.h>           // HAL header
+#include <cyg/hal/hal_intr.h>           // HAL header
+#include <cyg/hal/hal_if.h>             // HAL header
+
+
+
+// Clock related functions are in kinetis_clocking.c
+void hal_start_clocks( void );
+
+#ifdef CYG_HAL_STARTUP_ROM
+
+//===========================================================================
+// KINETIS FLASH configuration field
+//===========================================================================
+
+// Note: KINETIS FLASH configuration field must be present in Kinetis flash
+//       image and ocupy addresses 0x00000400 to 0x0000040f.
+
+// For ".flash_conf" section definition see MLT files.
+
+const cyghwr_hal_kinetis_flash_conf_t CYGHWR_HAL_KINETIS_FLASH_CONF_FIELD
+__attribute__((section(".flash_conf"), used)) = {
+    .backdoor_key = CYGHWR_HAL_KINETIS_FLASH_CONF_BACKDOOR_KEY,
+    .fprot = CYGHWR_HAL_KINETIS_FLASH_CONF_FPROT,
+    .fsec = CYGHWR_HAL_KINETIS_FLASH_CONF_FSEC,
+    .fopt = CYGHWR_HAL_KINETIS_FLASH_CONF_FOPT,
+    .feprot = CYGHWR_HAL_KINETIS_FLASH_CONF_FEPROT,
+    .fdprot = CYGHWR_HAL_KINETIS_FLASH_CONF_FDPROT
+};
+
+const cyghwr_hal_kinetis_flash_conf_t *
+CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_kinetis_flash_conf_p( void )
+{
+    return &CYGHWR_HAL_KINETIS_FLASH_CONF_FIELD;
+}
+
+#endif // CYG_HAL_STARTUP_ROM
+
+//=== KINETIS FLASH security configuration END. ============================
+
+
+//==========================================================================
+// Setup variant specific hardware
+//=========================================================================
+
+
+void hal_variant_init( void )
+{
+    hal_start_clocks();
+
+#ifdef CYGSEM_HAL_VIRTUAL_VECTOR_SUPPORT
+    hal_if_init();
+#endif
+}
+
+
+//===========================================================================
+// The  WDOG at Freescale Kinetis is enabled after reset. hal_wdog_disable
+// provides functionality for disabling it at startup.
+//===========================================================================
+
+static inline void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_kinetis_wdog_unlock_simple(volatile CygHwr_HAL_Kinetis_wdog_t *wdog_p)
+{
+    wdog_p->Unlock = 0xC520;
+    wdog_p->Unlock = 0xD928;
+}
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_kinetis_wdog_unlock(volatile CygHwr_HAL_Kinetis_wdog_t *wdog_p)
+{
+    CYGARC_CPSID( i );
+    hal_kinetis_wdog_unlock_simple(wdog_p);
+    CYGARC_CPSIE( i );
+}
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_wdog_disable(void)
+{
+    volatile CygHwr_HAL_Kinetis_wdog_t *wdog_p = CYGHWR_HAL_KINETIS_WDOG_P;
+    hal_kinetis_wdog_unlock_simple(wdog_p);
+    wdog_p->StCtrlH = CYGHWR_HAL_KINETIS_WDOG_STCTRLH_ALLOWUPDATE_M;
+}
+
+//==========================================================================
+// Pin configuration functions
+//
+
+static cyghwr_hal_kinetis_port_t * const Ports[] = {
+    CYGHWR_HAL_KINETIS_PORTA_P, CYGHWR_HAL_KINETIS_PORTB_P,
+    CYGHWR_HAL_KINETIS_PORTC_P, CYGHWR_HAL_KINETIS_PORTD_P,
+    CYGHWR_HAL_KINETIS_PORTE_P
+};
+
+void CYGOPT_HAL_KINETIS_MISC_FLASH_SECTION_ATTR
+hal_set_pin_function(cyg_uint32 pin)
+{
+    cyghwr_hal_kinetis_port_t *port_p;
+
+    if(pin != CYGHWR_HAL_KINETIS_PIN_NONE) {
+        port_p = Ports[CYGHWR_HAL_KINETIS_PIN_PORT(pin)];
+        port_p->pcr[CYGHWR_HAL_KINETIS_PIN_BIT(pin)] =
+              CYGHWR_HAL_KINETIS_PIN_FUNC(pin);
+    }
+}
+
+void
+hal_dump_pin_function(cyg_uint32 pin)
+{
+    cyghwr_hal_kinetis_port_t *port_p;
+
+    if(pin != CYGHWR_HAL_KINETIS_PIN_NONE) {
+        port_p = Ports[CYGHWR_HAL_KINETIS_PIN_PORT(pin)];
+        diag_printf("Port        %d: %p[%d] fun=%x\n",
+            CYGHWR_HAL_KINETIS_PIN_PORT(pin),
+            port_p,
+            CYGHWR_HAL_KINETIS_PIN_BIT(pin),
+            port_p->pcr[CYGHWR_HAL_KINETIS_PIN_BIT(pin)]);
+    }
+}
+
+void
+hal_dump_pin_setting(cyg_uint32 pin)
+{
+    if(pin != CYGHWR_HAL_KINETIS_PIN_NONE) {
+        diag_printf("Pin: 0x%08x Port=%d bit=%d fun=%x\n",
+            pin,
+            CYGHWR_HAL_KINETIS_PIN_PORT(pin),
+            CYGHWR_HAL_KINETIS_PIN_BIT(pin),
+            CYGHWR_HAL_KINETIS_PIN_FUNC(pin));
+    }
+}
+
+
+//==========================================================================
+// EOF kinetis_misc.c