diff dyncallback/dyncall_args_sparc64.c @ 191:2f7a7f3472cb

- first draft at sparc64 callbacks (floats not working, yet)
author Tassilo Philipp
date Fri, 17 Mar 2017 03:27:36 +0100
parents 82a0eef83db0
children 95cf20c0d1de
line wrap: on
line diff
--- a/dyncallback/dyncall_args_sparc64.c	Tue Mar 14 00:07:31 2017 +0100
+++ b/dyncallback/dyncall_args_sparc64.c	Fri Mar 17 03:27:36 2017 +0100
@@ -6,7 +6,7 @@
  Description: Callback's Arguments VM - Implementation for sparc64 - not yet
  License:
 
-   Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>,
+   Copyright (c) 2007-2017 Daniel Adler <dadler@uni-goettingen.de>,
                            Tassilo Philipp <tphilipp@potion-studios.com>
 
    Permission to use, copy, modify, and distribute this software for any
@@ -26,17 +26,18 @@
 
 #include "dyncall_args_sparc64.h"
 
-DCint       dcbArgInt      (DCArgs* p) { return 0; }
-DCuint      dcbArgUInt     (DCArgs* p) { return 0; }
-DCulonglong dcbArgULongLong(DCArgs* p) { return 0; }
+DCulonglong dcbArgULongLong(DCArgs* p) { return *(DCulonglong*)   p->arg_ptr++; }
 DClonglong  dcbArgLongLong (DCArgs* p) { return (DClonglong)dcbArgULongLong(p); }
-DClong      dcbArgLong     (DCArgs* p) { return (DClong)    dcbArgUInt(p); }
-DCulong     dcbArgULong    (DCArgs* p) { return (DCulong)   dcbArgUInt(p); }
-DCchar      dcbArgChar     (DCArgs* p) { return (DCchar)    dcbArgUInt(p); }
-DCuchar     dcbArgUChar    (DCArgs* p) { return (DCuchar)   dcbArgUInt(p); }
-DCshort     dcbArgShort    (DCArgs* p) { return (DCshort)   dcbArgUInt(p); }
-DCushort    dcbArgUShort   (DCArgs* p) { return (DCushort)  dcbArgUInt(p); }
-DCbool      dcbArgBool     (DCArgs* p) { return (DCbool)    dcbArgUInt(p); }
-DCpointer   dcbArgPointer  (DCArgs* p) { return (DCpointer) dcbArgUInt(p); }
-DCdouble    dcbArgDouble   (DCArgs* p) { return 0.0; }
-DCfloat     dcbArgFloat    (DCArgs* p) { return 0.0f; }
+DCulong     dcbArgULong    (DCArgs* p) { return (DCulong)   dcbArgULongLong(p); }
+DClong      dcbArgLong     (DCArgs* p) { return (DClong)    dcbArgULongLong(p); }
+DCuint      dcbArgUInt     (DCArgs* p) { return (DCuint)    dcbArgULongLong(p); }
+DCint       dcbArgInt      (DCArgs* p) { return (DCint)     dcbArgULongLong(p); }
+DCuchar     dcbArgUChar    (DCArgs* p) { return (DCuchar)   dcbArgULongLong(p); }
+DCchar      dcbArgChar     (DCArgs* p) { return (DCchar)    dcbArgULongLong(p); }
+DCushort    dcbArgUShort   (DCArgs* p) { return (DCushort)  dcbArgULongLong(p); }
+DCshort     dcbArgShort    (DCArgs* p) { return (DCshort)   dcbArgULongLong(p); }
+DCbool      dcbArgBool     (DCArgs* p) { return (DCbool)    dcbArgULongLong(p); }
+DCpointer   dcbArgPointer  (DCArgs* p) { return (DCpointer) dcbArgULongLong(p); }
+DCdouble    dcbArgDouble   (DCArgs* p) { return *(DCdouble*)      p->arg_ptr++; }
+DCfloat     dcbArgFloat    (DCArgs* p) { return *(DCfloat*)       p->arg_ptr++; }
+