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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [libfuncs.h] - Blame information for rev 849

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

Line No. Rev Author Line
1 684 jeremybenn
/* Definitions for code generation pass of GNU compiler.
2
   Copyright (C) 2001, 2004, 2007, 2008, 2010 Free Software Foundation, Inc.
3
 
4
This file is part of GCC.
5
 
6
GCC is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 3, or (at your option)
9
any later version.
10
 
11
GCC is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
GNU General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GCC; see the file COPYING3.  If not see
18
<http://www.gnu.org/licenses/>.  */
19
 
20
#ifndef GCC_LIBFUNCS_H
21
#define GCC_LIBFUNCS_H
22
 
23
#include "hashtab.h"
24
 
25
/* Enumeration of indexes into libfunc_table.  */
26
enum libfunc_index
27
{
28
  LTI_abort,
29
  LTI_memcpy,
30
  LTI_memmove,
31
  LTI_memcmp,
32
  LTI_memset,
33
  LTI_setbits,
34
 
35
  LTI_setjmp,
36
  LTI_longjmp,
37
  LTI_unwind_sjlj_register,
38
  LTI_unwind_sjlj_unregister,
39
 
40
  LTI_profile_function_entry,
41
  LTI_profile_function_exit,
42
 
43
  LTI_synchronize,
44
 
45
  LTI_gcov_flush,
46
 
47
  LTI_MAX
48
};
49
 
50
/* Information about an optab-related libfunc.  We use the same hashtable
51
   for normal optabs and conversion optabs.  In the first case mode2
52
   is unused.  */
53
struct GTY(()) libfunc_entry {
54
  size_t optab;
55
  enum machine_mode mode1, mode2;
56
  rtx libfunc;
57
};
58
 
59
/* Target-dependent globals.  */
60
struct GTY(()) target_libfuncs {
61
  /* SYMBOL_REF rtx's for the library functions that are called
62
     implicitly and not via optabs.  */
63
  rtx x_libfunc_table[LTI_MAX];
64
 
65
  /* Hash table used to convert declarations into nodes.  */
66
  htab_t GTY((param_is (struct libfunc_entry))) x_libfunc_hash;
67
};
68
 
69
extern GTY(()) struct target_libfuncs default_target_libfuncs;
70
#if SWITCHABLE_TARGET
71
extern struct target_libfuncs *this_target_libfuncs;
72
#else
73
#define this_target_libfuncs (&default_target_libfuncs)
74
#endif
75
 
76
#define libfunc_table \
77
  (this_target_libfuncs->x_libfunc_table)
78
 
79
/* Accessor macros for libfunc_table.  */
80
 
81
#define abort_libfunc   (libfunc_table[LTI_abort])
82
#define memcpy_libfunc  (libfunc_table[LTI_memcpy])
83
#define memmove_libfunc (libfunc_table[LTI_memmove])
84
#define memcmp_libfunc  (libfunc_table[LTI_memcmp])
85
#define memset_libfunc  (libfunc_table[LTI_memset])
86
#define setbits_libfunc (libfunc_table[LTI_setbits])
87
 
88
#define setjmp_libfunc  (libfunc_table[LTI_setjmp])
89
#define longjmp_libfunc (libfunc_table[LTI_longjmp])
90
#define unwind_sjlj_register_libfunc (libfunc_table[LTI_unwind_sjlj_register])
91
#define unwind_sjlj_unregister_libfunc \
92
  (libfunc_table[LTI_unwind_sjlj_unregister])
93
 
94
#define profile_function_entry_libfunc  (libfunc_table[LTI_profile_function_entry])
95
#define profile_function_exit_libfunc   (libfunc_table[LTI_profile_function_exit])
96
 
97
#define synchronize_libfunc     (libfunc_table[LTI_synchronize])
98
 
99
#define gcov_flush_libfunc      (libfunc_table[LTI_gcov_flush])
100
 
101
/* In explow.c */
102
extern void set_stack_check_libfunc (const char *);
103
 
104
#endif /* GCC_LIBFUNCS_H */

powered by: WebSVN 2.1.0

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