#ifndef __PPC_FRAME_H__
#define __PPC_FRAME_H__
#include "defs.h"
struct frame_info;
typedef struct ppc_function_boundaries_request {
CORE_ADDR min_start;
CORE_ADDR max_end;
CORE_ADDR contains_pc;
CORE_ADDR prologue_start;
CORE_ADDR body_start;
CORE_ADDR epilogue_start;
CORE_ADDR function_end;
} ppc_function_boundaries_request;
typedef struct ppc_function_boundaries {
CORE_ADDR prologue_start;
CORE_ADDR body_start;
CORE_ADDR epilogue_start;
CORE_ADDR function_end;
} ppc_function_boundaries;
typedef struct ppc_function_properties {
int offset;
int offset2;
int saved_gpr;
int saved_fpr;
int gpr_offset;
int fpr_offset;
char frameless;
char alloca_saved;
int alloca_reg;
char lr_saved;
int lr_offset;
int lr_reg;
char cr_saved;
int cr_offset;
int cr_reg;
char minimal_toc_loaded;
} ppc_function_properties;
void ppc_print_boundaries PARAMS ((ppc_function_boundaries *bounds));
void ppc_print_properties PARAMS ((ppc_function_properties *props));
CORE_ADDR ppc_parse_instructions PARAMS
((CORE_ADDR start, CORE_ADDR end, ppc_function_properties *props));
void ppc_clear_function_boundaries_request PARAMS ((ppc_function_boundaries_request *request));
void ppc_clear_function_boundaries PARAMS ((ppc_function_boundaries *boundaries));
void ppc_clear_function_properties PARAMS ((ppc_function_properties *properties));
int ppc_find_function_boundaries PARAMS
((ppc_function_boundaries_request *request,
ppc_function_boundaries *reply));
int ppc_frame_cache_boundaries PARAMS ((struct frame_info *frame, ppc_function_boundaries *bounds));
int ppc_frame_cache_properties PARAMS ((struct frame_info *frame, ppc_function_properties *props));
#endif