* objdump.c (SFILE): Add size field.
[deliverable/binutils-gdb.git] / gdb / i960-tdep.c
index a125ec209e211fc7f54b14f706481124faf7f126..0452b95be95d7eed59764f67efe83aa1a9a25027 100644 (file)
@@ -31,6 +31,28 @@ static CORE_ADDR next_insn PARAMS ((CORE_ADDR memaddr,
                                    unsigned int *pword1,
                                    unsigned int *pword2));
 
+/* Does the specified function use the "struct returning" convention
+   or the "value returning" convention?  The "value returning" convention
+   almost invariably returns the entire value in registers.  The
+   "struct returning" convention often returns the entire value in
+   memory, and passes a pointer (out of or into the function) saying
+   where the value (is or should go).
+
+   Since this sometimes depends on whether it was compiled with GCC,
+   this is also an argument.  This is used in call_function to build a
+   stack, and in value_being_returned to print return values.
+
+   On i960, a structure is returned in registers g0-g3, if it will fit.
+   If it's more than 16 bytes long, g13 pointed to it on entry.  */
+
+int
+i960_use_struct_convention (gcc_p, type)
+     int gcc_p;
+     struct type *type;
+{
+  return (TYPE_LENGTH (type) > 16);
+}
+
 /* gdb960 is always running on a non-960 host.  Check its characteristics.
    This routine must be called as part of gdb initialization.  */
 
@@ -522,6 +544,7 @@ saved_pc_after_call (frame)
 /* Discard from the stack the innermost frame,
    restoring all saved registers.  */
 
+void
 pop_frame ()
 {
   register struct frame_info *current_fi, *prev_fi;
@@ -769,7 +792,7 @@ next_insn (memaddr, pword1, pword2)
 
 int
 mon960_frame_chain_valid (chain, curframe)
-    unsigned int chain;
+    CORE_ADDR chain;
     struct frame_info *curframe;
 {
        struct symbol *sym;
This page took 0.023265 seconds and 4 git commands to generate.