source: mainline/arch/ppc64/include/exception.h@ afc12d0

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since afc12d0 was 874621f, checked in by Ondrej Palkovsky <ondrap@…>, 19 years ago

Added kernel circular buffer klog.
Added automatic killing of tasks raising inappropriate exceptions.
TODO Fix vsnprintf return value(and behaviour according to specs) and remove workaround in klog.

  • Property mode set to 100644
File size: 2.4 KB
Line 
1/*
2 * Copyright (C) 2006 Martin Decky
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef __ppc64_EXCEPTION_H__
30#define __ppc64_EXCEPTION_H__
31
32#ifndef __ppc64_TYPES_H__
33# include <arch/types.h>
34#endif
35
36#include <typedefs.h>
37
38struct istate {
39 __u64 r0;
40 __u64 r2;
41 __u64 r3;
42 __u64 r4;
43 __u64 r5;
44 __u64 r6;
45 __u64 r7;
46 __u64 r8;
47 __u64 r9;
48 __u64 r10;
49 __u64 r11;
50 __u64 r13;
51 __u64 r14;
52 __u64 r15;
53 __u64 r16;
54 __u64 r17;
55 __u64 r18;
56 __u64 r19;
57 __u64 r20;
58 __u64 r21;
59 __u64 r22;
60 __u64 r23;
61 __u64 r24;
62 __u64 r25;
63 __u64 r26;
64 __u64 r27;
65 __u64 r28;
66 __u64 r29;
67 __u64 r30;
68 __u64 r31;
69 __u64 cr;
70 __u64 pc;
71 __u64 srr1;
72 __u64 lr;
73 __u64 ctr;
74 __u64 xer;
75 __u64 r12;
76 __u64 sp;
77};
78
79static inline void istate_set_retaddr(istate_t *istate, __address retaddr)
80{
81 istate->pc = retaddr;
82}
83/** Return true if exception happened while in userspace */
84#include <panic.h>
85static inline int istate_from_uspace(istate_t *istate)
86{
87 panic("istate_from_uspace not yet implemented");
88 return 0;
89}
90static inline __native istate_get_pc(istate_t *istate)
91{
92 return istate->pc;
93}
94
95#endif
Note: See TracBrowser for help on using the repository browser.