/* handlers.c -- Setup default handlers.
 * 
 * Copyright (c) 2004  Red Hat, Inc. All rights reserved.
 *
 * This copyrighted material is made available to anyone wishing to use, modify,
 * copy, or redistribute it subject to the terms and conditions of the BSD 
 * License.  This program is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY expressed or implied, including the implied 
 * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  A copy 
 * of this license is available at http://www.opensource.org/licenses. Any 
 * Red Hat trademarks that are incorporated in the source code or documentation
 * are not subject to the BSD License and may only be used or replicated with 
 * the express permission of Red Hat, Inc.
 */

#pragma weak _handler_NMI

void __interrupt
_handler_NMI ()
{
}

#pragma weak _handler_RI

void __interrupt
_handler_RI ()
{
}

#pragma weak _handler_ZDIV

void __interrupt
_handler_ZDIV ()
{
}

#pragma weak _handler_BRK

void __interrupt
_handler_BRK ()
{
}

#pragma weak _handler_SWI

void __interrupt
_handler_SWI ()
{
}

#pragma weak _handler_DEBUG

void __interrupt
_handler_DEBUG ()
{
}

#pragma weak _handler_DSP

void __interrupt
_handler_DSP ()
{
}

#pragma weak _handler_COP

void __interrupt
_handler_COP ()
{
}

/* hardware interrupt */


#pragma weak _handler_INT0

void __interrupt
_handler_INT0 ()
{
}

#pragma weak _handler_INT1

void __interrupt
_handler_INT1 ()
{
}

#pragma weak _handler_INT2

void __interrupt
_handler_INT2 ()
{
}

#pragma weak _handler_INT3

void __interrupt
_handler_INT3 ()
{
}

#pragma weak _handler_INT4

void __interrupt
_handler_INT4 ()
{
}

#pragma weak _handler_INT5

void __interrupt
_handler_INT5 ()
{
}

#pragma weak _handler_INT6

void __interrupt
_handler_INT6 ()
{
}

#pragma weak _handler_INT7

void __interrupt
_handler_INT7 ()
{
}

#pragma weak _handler_INT8

void __interrupt
_handler_INT8 ()
{
}

#pragma weak _handler_INT9

void __interrupt
_handler_INT9 ()
{
}

#pragma weak _handler_INT10

void __interrupt
_handler_INT10 ()
{
}

#pragma weak _handler_INT11

void __interrupt
_handler_INT11 ()
{
}

#pragma weak _handler_INT12

void __interrupt
_handler_INT12 ()
{
}

#pragma weak _handler_INT13

void __interrupt
_handler_INT13 ()
{
}

#pragma weak _handler_INT14

void __interrupt
_handler_INT14 ()
{
}

#pragma weak _handler_INT15

void __interrupt
_handler_INT15 ()
{
}

#pragma weak _handler_INT16

void __interrupt
_handler_INT16 ()
{
}

#pragma weak _handler_INT17

void __interrupt
_handler_INT17 ()
{
}

#pragma weak _handler_INT18

void __interrupt
_handler_INT18 ()
{
}

#pragma weak _handler_INT19

void __interrupt
_handler_INT19 ()
{
}

#pragma weak _handler_INT20

void __interrupt
_handler_INT20 ()
{
}

#pragma weak _handler_INT21

void __interrupt
_handler_INT21 ()
{
}

#pragma weak _handler_INT22

void __interrupt
_handler_INT22 ()
{
}

#pragma weak _handler_INT23

void __interrupt
_handler_INT23 ()
{
}

#pragma weak _handler_INT24

void __interrupt
_handler_INT24 ()
{
}

#pragma weak _handler_INT25

void __interrupt
_handler_INT25 ()
{
}

#pragma weak _handler_INT26

void __interrupt
_handler_INT26 ()
{
}

#pragma weak _handler_INT27

void __interrupt
_handler_INT27 ()
{
}

#pragma weak _handler_INT28

void __interrupt
_handler_INT28 ()
{
}

#pragma weak _handler_INT29

void __interrupt
_handler_INT29 ()
{
}

#pragma weak _handler_INT30

void __interrupt
_handler_INT30 ()
{
}

#pragma weak _handler_INT31

void __interrupt
_handler_INT31 ()
{
}
