Mercurial > pub > dyncall > dyncall
comparison dyncallback/dyncall_args_sparc32.c @ 157:49549739228c
- sparc callback asm and args code (still some stack alignment issues, currently)
- doc improvements for sparc callconv
author | cslag |
---|---|
date | Wed, 28 Dec 2016 16:48:35 -0600 |
parents | 82a0eef83db0 |
children | 51b0a4544d9e |
comparison
equal
deleted
inserted
replaced
156:9e4f1355a388 | 157:49549739228c |
---|---|
4 Library: dyncallback | 4 Library: dyncallback |
5 File: dyncallback/dyncall_args_sparc32.c | 5 File: dyncallback/dyncall_args_sparc32.c |
6 Description: Callback's Arguments VM - Implementation for sparc32 - not yet | 6 Description: Callback's Arguments VM - Implementation for sparc32 - not yet |
7 License: | 7 License: |
8 | 8 |
9 Copyright (c) 2007-2015 Daniel Adler <dadler@uni-goettingen.de>, | 9 Copyright (c) 2007-2016 Daniel Adler <dadler@uni-goettingen.de>, |
10 Tassilo Philipp <tphilipp@potion-studios.com> | 10 Tassilo Philipp <tphilipp@potion-studios.com> |
11 | 11 |
12 Permission to use, copy, modify, and distribute this software for any | 12 Permission to use, copy, modify, and distribute this software for any |
13 purpose with or without fee is hereby granted, provided that the above | 13 purpose with or without fee is hereby granted, provided that the above |
14 copyright notice and this permission notice appear in all copies. | 14 copyright notice and this permission notice appear in all copies. |
24 */ | 24 */ |
25 | 25 |
26 | 26 |
27 #include "dyncall_args_sparc32.h" | 27 #include "dyncall_args_sparc32.h" |
28 | 28 |
29 DCint dcbArgInt (DCArgs* p) { return 0; } | 29 static void* sparc_word(DCArgs* args) |
30 DCuint dcbArgUInt (DCArgs* p) { return 0; } | 30 { |
31 DCulonglong dcbArgULongLong(DCArgs* p) { return 0; } | 31 return args->arg_ptr++; |
32 } | |
33 | |
34 static void* sparc_dword(DCArgs* args) | |
35 { | |
36 void *p = args->arg_ptr; | |
37 args->arg_ptr += 2; | |
38 return p; | |
39 } | |
40 | |
41 DCuint dcbArgUInt (DCArgs* p) { return *(DCuint*)sparc_word(p); } | |
42 DCulonglong dcbArgULongLong(DCArgs* p) { return *(DCulonglong*)sparc_dword(p); } | |
43 | |
32 DClonglong dcbArgLongLong (DCArgs* p) { return (DClonglong)dcbArgULongLong(p); } | 44 DClonglong dcbArgLongLong (DCArgs* p) { return (DClonglong)dcbArgULongLong(p); } |
45 DCint dcbArgInt (DCArgs* p) { return (DCint) dcbArgUInt(p); } | |
33 DClong dcbArgLong (DCArgs* p) { return (DClong) dcbArgUInt(p); } | 46 DClong dcbArgLong (DCArgs* p) { return (DClong) dcbArgUInt(p); } |
34 DCulong dcbArgULong (DCArgs* p) { return (DCulong) dcbArgUInt(p); } | 47 DCulong dcbArgULong (DCArgs* p) { return (DCulong) dcbArgUInt(p); } |
35 DCchar dcbArgChar (DCArgs* p) { return (DCchar) dcbArgUInt(p); } | 48 DCchar dcbArgChar (DCArgs* p) { return (DCchar) dcbArgUInt(p); } |
36 DCuchar dcbArgUChar (DCArgs* p) { return (DCuchar) dcbArgUInt(p); } | 49 DCuchar dcbArgUChar (DCArgs* p) { return (DCuchar) dcbArgUInt(p); } |
37 DCshort dcbArgShort (DCArgs* p) { return (DCshort) dcbArgUInt(p); } | 50 DCshort dcbArgShort (DCArgs* p) { return (DCshort) dcbArgUInt(p); } |
38 DCushort dcbArgUShort (DCArgs* p) { return (DCushort) dcbArgUInt(p); } | 51 DCushort dcbArgUShort (DCArgs* p) { return (DCushort) dcbArgUInt(p); } |
39 DCbool dcbArgBool (DCArgs* p) { return (DCbool) dcbArgUInt(p); } | 52 DCbool dcbArgBool (DCArgs* p) { return (DCbool) dcbArgUInt(p); } |
40 DCpointer dcbArgPointer (DCArgs* p) { return (DCpointer) dcbArgUInt(p); } | 53 DCpointer dcbArgPointer (DCArgs* p) { return (DCpointer) dcbArgUInt(p); } |
41 DCdouble dcbArgDouble (DCArgs* p) { return 0.0; } | 54 |
42 DCfloat dcbArgFloat (DCArgs* p) { return 0.0f; } | 55 DCdouble dcbArgDouble (DCArgs* p) { return *(DCdouble*)sparc_dword(p); } |
56 DCfloat dcbArgFloat (DCArgs* p) { return *(DCfloat*) sparc_word(p); } | |
57 |