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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [packages/] [hal/] [mn10300/] [stb/] [v2_0/] [include/] [platform.inc] - Rev 203

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

#ifndef CYGONCE_HAL_PLATFORM_INC
#define CYGONCE_HAL_PLATFORM_INC
##=============================================================================
##
##      platform.inc
##
##      STB board assembler header file
##
##=============================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, 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.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 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.
##
## This exception does not invalidate any other reasons why a work based on
## this file might be covered by the GNU General Public License.
##
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
##=============================================================================
#######DESCRIPTIONBEGIN####
##
## Author(s):   nickg
## Contributors:        nickg
## Date:        1999-04-06
## Purpose:     STB board definitions.
## Description: This file contains various definitions and macros that are
##              useful for writing assembly code for the STB board.
## Usage:
##              #include <cyg/hal/platform.inc>
##              ...
##              
##
######DESCRIPTIONEND####
##
##=============================================================================

#include <pkgconf/hal.h>


#------------------------------------------------------------------------------
# Diagnostics macros.

#define CYG_HAL_DIAG_LED_ADDRESS1 0x83f90000
#define CYG_HAL_DIAG_LED_ADDRESS2 0x81f90000
#define CYG_HAL_DIAG_LED_ADDRESS3 hal_diag_led_state

        .macro  hal_diag_data
        .globl  hal_diag_led_state
hal_diag_led_state:     .long   0xffffffff
hal_diag_intr_count:    .long   0
        .endm

        .macro  hal_diag_init
        mov     0xFFFFFFFF,d0
        mov     CYG_HAL_DIAG_LED_ADDRESS1,a0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS2,a0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS3,a0
        mov     d0,(a0)

        mov     0xd4002000,a0   # SR control regs
        mov     0xd4003000,a1   # timer control regs
        mov     99,d0
        movbu   d0,(16,a1)
        mov     0x80,d0
        movbu   d0,(a1)
        clr     d0
        movbu   d0,(4,a0)
        mov     0xc084,d0
        movhu   d0,(a0)

        jmp     1f

hal_diag_digits:
        .byte   0x81    # 0
        .byte   0xf3    # 1
        .byte   0x49    # 2
        .byte   0x61    # 3
        .byte   0x33    # 4
        .byte   0x25    # 5
        .byte   0x05    # 6
        .byte   0xf1    # 7
        .byte   0x01    # 8
        .byte   0x21    # 9
        .byte   0x11    # A
        .byte   0x07    # B
        .byte   0x8d    # C
        .byte   0x43    # D
        .byte   0x0d    # E
        .byte   0x1d    # F

hal_diag_hex_digits:
        .ascii  "0123456789ABCDEF"
1:

#       hal_diag_led 0
#       hal_diag_led 1
#       hal_diag_led 2
#       hal_diag_led 3
#       hal_diag_led 4
#       hal_diag_led 5
#       hal_diag_led 6
#       hal_diag_led 7
#       hal_diag_led 8
#       hal_diag_led 9
#       hal_diag_led 0xa
#       hal_diag_led 0xb
#       hal_diag_led 0xc
#       hal_diag_led 0xd
#       hal_diag_led 0xe
#       hal_diag_led 0xf

        .endm

        .macro  hal_diag_excpt_start
        mov     CYG_HAL_DIAG_LED_ADDRESS3,a0
        mov     (a0),d0
        xor     0x01000000,d0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS1,a0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS2,a0
        mov     d0,(a0)
        .endm

        .macro  hal_diag_intr_start
        mov     (hal_diag_intr_count),d1
        inc     d1
        cmp     100,d1
        bne     x\@
        clr     d1
        mov     CYG_HAL_DIAG_LED_ADDRESS3,a0
        mov     (a0),d0
        xor     0x00010000,d0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS1,a0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS2,a0
        mov     d0,(a0)
x\@:
        mov     d1,(hal_diag_intr_count)
        .endm

#if 0
        .macro  hal_diag_restore
        mov     (hal_diag_intr_count),d0
        and     0x1000,d0
        beq     x\@
        mov     CYG_HAL_DIAG_LED_ADDRESS3,a0
        mov     (a0),d0
        and     0xfffeffff,d0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS1,a0
        mov     d0,(a0)
        mov     CYG_HAL_DIAG_LED_ADDRESS2,a0
        mov     d0,(a0)
x\@:
        .endm
#else
        .macro  hal_diag_restore
        .endm
#endif

#if 0
        .macro  hal_diag_led val
        movm    [d2,d3,a2],(sp)
        mov     hal_diag_digits,a2
        mov     \val,d2
        and     0xf,d2
        add     d2,a2
        movbu   (a2),d3
        mov     CYG_HAL_DIAG_LED_ADDRESS3,a2
        mov     (a2),d2
        asl     8,d2
        or      d3,d2
        mov     d2,(a2)
        mov     CYG_HAL_DIAG_LED_ADDRESS1,a2
        mov     d2,(a2)
        mov     CYG_HAL_DIAG_LED_ADDRESS2,a2
        mov     d2,(a2)

#       mov     \val,d3
#       and     0xf,d3
#       mov     hal_diag_hex_digits,a2
#       add     d3,a2
#       movbu   (a2),d3
#       mov     0xd4002000,a2
#x2:    movhu   (0,a2),d2
#       and     0x20,d2
#       bne     2b
#       movbu   d3,(8,a2)

        mov     200000,d2
1:
        add     -1,d2
        cmp     0,d2
        bne     1b

        movm    (sp),[d2,d3,a2]
        .endm
#else
        .macro  hal_diag_led val
        .endm
#endif

#define CYGPKG_HAL_MN10300_DIAG_DEFINED


#------------------------------------------------------------------------------
#endif // ifndef CYGONCE_HAL_PLATFORM_INC
# end of platform.inc

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

powered by: WebSVN 2.1.0

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