📄 exception.c
字号:
/*------------------------------------------------------------------------------*/
/* */
/* Copyright (C) 1999-2003 by Texas Instruments, Inc. All rights reserved. */
/* Copyright (C) 2001-2003 Telogy Networks. */
/* */
/* IMPORTANT - READ CAREFULLY BEFORE PROCEEDING TO USE SOFTWARE. */
/* */
/* This document is displayed for you to read prior to using the software */
/* and documentation. By using the software and documentation, or opening */
/* the sealed packet containing the software, or proceeding to download the */
/* software from a Bulletin Board System(BBS) or a WEB Server, you agree to */
/* abide by the following Texas Instruments License Agreement. If you choose */
/* not to agree with these provisions, promptly discontinue use of the */
/* software and documentation and return the material to the place you */
/* obtained it. */
/* */
/* *** NOTE *** */
/* */
/* The licensed materials contain MIPS Technologies, Inc. confidential */
/* information which is protected by the appropriate MIPS Technologies, Inc. */
/* license agreement. It is your responsibility to comply with these */
/* licenses. */
/* */
/* Texas Instruments License Agreement */
/* */
/* 1. License - Texas Instruments (hereinafter "TI"), grants you a license */
/* to use the software program and documentation in this package ("Licensed */
/* Materials") for Texas Instruments broadband products. */
/* */
/* 2. Restrictions - You may not reverse-assemble or reverse-compile the */
/* Licensed Materials provided in object code or executable format. You may */
/* not sublicense, transfer, assign, rent, or lease the Licensed Materials */
/* or this Agreement without written permission from TI. */
/* */
/* 3. Copyright - The Licensed Materials are copyrighted. Accordingly, you */
/* may either make one copy of the Licensed Materials for backup and/or */
/* archival purposes or copy the Licensed Materials to another medium and */
/* keep the original Licensed Materials for backup and/or archival purposes. */
/* */
/* 4. Runtime and Applications Software - You may create modified or */
/* derivative programs of software identified as Runtime Libraries or */
/* Applications Software, which, in source code form, remain subject to this */
/* Agreement, but object code versions of such derivative programs are not */
/* subject to this Agreement. */
/* */
/* 5. Warranty - TI warrants the media to be free from defects in material */
/* and workmanship and that the software will substantially conform to the */
/* related documentation for a period of ninety (90) days after the date of */
/* your purchase. TI does not warrant that the Licensed Materials will be */
/* free from error or will meet your specific requirements. */
/* */
/* 6. Remedies - If you find defects in the media or that the software does */
/* not conform to the enclosed documentation, you may return the Licensed */
/* Materials along with the purchase receipt, postage prepaid, to the */
/* following address within the warranty period and receive a refund. */
/* */
/* TEXAS INSTRUMENTS */
/* Application Specific Products, MS 8650 */
/* c/o ADAM2 Application Manager */
/* 12500 TI Boulevard */
/* Dallas, TX 75243 - U.S.A. */
/* */
/* 7. Limitations - TI makes no warranty or condition, either expressed or */
/* implied, including, but not limited to, any implied warranties of */
/* merchantability and fitness for a particular purpose, regarding the */
/* licensed materials. */
/* */
/* Neither TI nor any applicable licensor will be liable for any indirect, */
/* incidental or consequential damages, including but not limited to loss of */
/* profits. */
/* */
/* 8. Term - The license is effective until terminated. You may terminate */
/* it at any other time by destroying the program together with all copies, */
/* modifications and merged portions in any form. It also will terminate if */
/* you fail to comply with any term or condition of this Agreement. */
/* */
/* 9. Export Control - The re-export of United States origin software and */
/* documentation is subject to the U.S. Export Administration Regulations or */
/* your equivalent local regulations. Compliance with such regulations is */
/* your responsibility. */
/* */
/* *** IMPORTANT NOTICE *** */
/* */
/* Texas Instruments (TI) reserves the right to make changes to or to */
/* discontinue any semiconductor product or service identified in this */
/* publication without notice. TI advises its customers to obtain the latest */
/* version of the relevant information to verify, before placing orders, */
/* that the information being relied upon is current. */
/* */
/* TI warrants performance of its semiconductor products and related */
/* software to current specifications in accordance with TI's standard */
/* warranty. Testing and other quality control techniques are utilized to */
/* the extent TI deems necessary to support this warranty. Unless mandated */
/* by government requirements, specific testing of all parameters of each */
/* device is not necessarily performed. */
/* */
/* Please be aware that Texas Instruments products are not intended for use */
/* in life-support appliances, devices, or systems. Use of a TI product in */
/* such applications without the written approval of the appropriate TI */
/* officer is prohibited. Certain applications using semiconductor devices */
/* may involve potential risks of injury, property damage, or loss of life. */
/* In order to minimize these risks, adequate design and operating */
/* safeguards should be provided by the customer to minimize inherent or */
/* procedural hazards. Inclusion of TI products in such applications is */
/* understood to be fully at the risk of the customer using TI devices or */
/* systems. */
/* */
/* TI assumes no liability for TI applications assistance, customer product */
/* design, software performance, or infringement of patents or services */
/* described herein. Nor does TI warrant or represent that license, either */
/* expressed or implied, is granted under any patent right, copyright, mask */
/* work right, or other intellectual property right of TI covering or */
/* relating to any combination, machine, or process in which such */
/* semiconductor products or services might be or are used. */
/* */
/* All company and/or product names are trademarks and/or registered */
/* trademarks of their respective manaufacturers. */
/*------------------------------------------------------------------------------*/
#include "_stdio.h"
#include "gdb_stub.h"
#include "sio.h"
#define REG_NAMES_COUNT 32
t_gdb_regs sys_gdb_regs;
/* CPU register names */
static const char *(reg_names[]) =
{
"zr", "at", "v0", "v1", "a0", "a1", "a2", "a3",
"t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7",
"s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
"t8", "t9", "k0", "k1", "gp", "sp", "s8", "ra"
};
static const char *(ExecCode[]) =
{
"interrupt", "TLB Modified",
"No TLB Entry for Load", "No TLB Entry for Store",
"Address Alignment Load", "Address Alignment Store",
"Instruction Bus Error", "Data Bus Error",
"syscall", "Break Point",
"Reserved Instruction", "Coprocessor Unuasable",
"Arithmetic Overflow", "TRAP",
"Virtual Coherency Error for Instructions", "Floating point Exception",
"CP2 Exception", "Resd",
"Resd", "Resd",
"Resd", "Resd",
"Resd", "Watch",
"Resd", "Resd",
"Resd", "Resd",
"Resd", "Resd",
"Resd", "Virtual Coherency error on data"
};
void dump_exception_regs(void);
extern int ExitCall;
extern int _reset;
void sys_exception_entry(void)
{
PrintfRestore();
SioFlush(); /*Not a long term solution!!! */
SioInit();
dump_exception_regs();
/*If an interrupt, disable IE */
if ((sys_gdb_regs.cp0_cause&0x7c)==0)
sys_gdb_regs.cp0_status&=~1;
/*Set return from aplication route */
/* if ((sys_gdb_regs.cp0_epc & 0x1fff0000)==0x10000000) */
sys_gdb_regs.cp0_epc=(unsigned int)&_reset;
/* else */
/* sys_gdb_regs.cp0_epc=(unsigned int)&ExitCall; */
/* if ((sys_gdb_regs.cp0_errorepc & 0x1fff0000)==0x10000000) */
sys_gdb_regs.cp0_errorepc=(unsigned int)&_reset;
/* else */
/* sys_gdb_regs.cp0_errorepc=(unsigned int)&ExitCall; */
/* dump_exception_regs(); */
}
void dump_exception_regs(void)
{
UINT32* regs;
int i,j;
/*Must deal with NMI at some time!! */
sys_printf("\nCAUSE = 0x%08x", sys_gdb_regs.cp0_cause );
sys_printf(" %s",ExecCode[(sys_gdb_regs.cp0_cause>>2)&0x1f]);
if (sys_gdb_regs.cp0_cause&0x80000000) sys_printf(" during Branch Delay");
sys_printf("\n");
sys_printf("STATUS = 0x%08x ", sys_gdb_regs.cp0_status );
sys_printf("EPC = 0x%08x\n", sys_gdb_regs.cp0_epc );
sys_printf("BADVADDR = 0x%08x ", sys_gdb_regs.cp0_badvaddr );
sys_printf("ERROREPC = 0x%08x\n\n", sys_gdb_regs.cp0_errorepc );
regs = (UINT32 *) &sys_gdb_regs.reg0;
for(i=0; i<REG_NAMES_COUNT; i++)
{
j = ((i & 3) << 3) + (i >> 2);
sys_printf("$%2d(%s):0x%08x%s", j, reg_names[j], regs[j],
(i & 3) == 3 ? "\n" : " ");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -