annotate packages/hal/sh/cq7708/current/src/plf_misc.c @ 94:4642a6d35749 ecos-sw-2000-06-02

Merge from eCos master repository on 2000-06-02-07:47:04-BST
author jlarmour
date Fri, 02 Jun 2000 17:35:00 +0000
parents
children 5a0cc6c243a9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
94
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
1 //==========================================================================
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
2 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
3 // plf_misc.c
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
4 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
5 // HAL platform miscellaneous functions
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
6 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
7 //==========================================================================
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
9 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
10 // -------------------------------------------
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
14 // http://www.redhat.com/
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
15 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
19 // the License.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
20 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
22 // released September 30, 1998.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
23 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
25 // Portions created by Red Hat are
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
27 // All Rights Reserved.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
28 // -------------------------------------------
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
29 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
31 //==========================================================================
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
33 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
34 // Author(s): jskov
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
35 // Contributors: jskov,nickg, jlarmour
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
36 // Date: 1999-10-13
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
37 // Purpose: HAL miscellaneous functions
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
38 // Description: This file contains miscellaneous functions provided by the
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
39 // HAL.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
40 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
41 //####DESCRIPTIONEND####
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
42 //
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
43 //==========================================================================
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
44
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
45 #include <pkgconf/hal.h>
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
46
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
47 #include <cyg/infra/cyg_type.h> // Base types
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
48
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
49 #include <cyg/hal/hal_arch.h> // architectural definitions
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
50
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
51 #include <cyg/hal/hal_intr.h> // Interrupt handling
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
52
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
53 #include <cyg/hal/hal_cache.h> // Cache handling
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
54
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
55 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
56 #include <cyg/hal/hal_stub.h> // stub functionality
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
57 #endif
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
58
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
59 //--------------------------------------------------------------------------
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
60 // Functions to support the detection and execution of a user provoked
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
61 // program break. These are usually called from interrupt routines.
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
62
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
63 cyg_bool
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
64 cyg_hal_is_break(char *buf, int size)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
65 {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
66 while( size )
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
67 if( buf[--size] == 0x03 ) return true;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
68
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
69 return false;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
70 }
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
71
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
72 void
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
73 cyg_hal_user_break( CYG_ADDRWORD *regs )
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
74 {
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
75 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
76 HAL_SavedRegisters *__sreg = (HAL_SavedRegisters *)regs;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
77 target_register_t __pc;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
78
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
79 if (__sreg)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
80 __pc = (target_register_t) __sreg->pc;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
81 else
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
82 __pc = (target_register_t) &&safe_breakpoint;
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
83
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
84 // Note: This would be better for the else case but doesn't work
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
85 // at the moment. CR: 101357
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
86 // __pc = (target_register_t) __builtin_return_address(0);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
87
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
88 cyg_hal_gdb_interrupt (__pc);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
89
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
90 safe_breakpoint:
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
91 #elif defined(CYGSEM_HAL_USE_ROM_MONITOR_GDB_stubs)
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
92
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
93 // Note: Need to communicate to the ROM stub instead
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
94 HAL_BREAKPOINT(breakinst);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
95
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
96 #else
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
97
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
98 HAL_BREAKPOINT(breakinst);
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
99
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
100 #endif
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
101
4642a6d35749 Merge from eCos master repository on 2000-06-02-07:47:04-BST
jlarmour
parents:
diff changeset
102 }