X-Git-Url: https://repo.jachan.dev/qemu.git/blobdiff_plain/89e9429c3cb42400f3a80890e0c20b18aa62a11d..e6b405fe00d8e6424a58492b37a1656d1ef0929b:/thunk.c
diff --git a/thunk.c b/thunk.c
index f501fd72fc..7f31cffe09 100644
--- a/thunk.c
+++ b/thunk.c
@@ -16,9 +16,7 @@
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see .
*/
-#include
-#include
-#include
+#include "qemu/osdep.h"
#include "qemu.h"
#include "exec/user/thunk.h"
@@ -69,7 +67,6 @@ void thunk_register_struct(int id, const char *name, const argtype *types)
int nb_fields, offset, max_align, align, size, i, j;
assert(id < max_struct_entries);
- se = struct_entries + id;
/* first we count the number of fields */
type_ptr = types;
@@ -78,6 +75,8 @@ void thunk_register_struct(int id, const char *name, const argtype *types)
type_ptr = thunk_type_next(type_ptr);
nb_fields++;
}
+ assert(nb_fields > 0);
+ se = struct_entries + id;
se->field_types = types;
se->nb_fields = nb_fields;
se->name = name;
@@ -87,10 +86,10 @@ void thunk_register_struct(int id, const char *name, const argtype *types)
#endif
/* now we can alloc the data */
- for(i = 0;i < 2; i++) {
+ for (i = 0; i < ARRAY_SIZE(se->field_offsets); i++) {
offset = 0;
max_align = 1;
- se->field_offsets[i] = malloc(nb_fields * sizeof(int));
+ se->field_offsets[i] = g_new(int, nb_fields);
type_ptr = se->field_types;
for(j = 0;j < nb_fields; j++) {
size = thunk_type_size(type_ptr, i);
@@ -275,37 +274,36 @@ const argtype *thunk_convert(void *dst, const void *src,
/* from em86 */
/* Utility function: Table-driven functions to translate bitmasks
- * between X86 and Alpha formats...
+ * between host and target formats
*/
-unsigned int target_to_host_bitmask(unsigned int x86_mask,
+unsigned int target_to_host_bitmask(unsigned int target_mask,
const bitmask_transtbl * trans_tbl)
{
const bitmask_transtbl *btp;
- unsigned int alpha_mask = 0;
+ unsigned int host_mask = 0;
- for(btp = trans_tbl; btp->x86_mask && btp->alpha_mask; btp++) {
- if((x86_mask & btp->x86_mask) == btp->x86_bits) {
- alpha_mask |= btp->alpha_bits;
- }
+ for (btp = trans_tbl; btp->target_mask && btp->host_mask; btp++) {
+ if ((target_mask & btp->target_mask) == btp->target_bits) {
+ host_mask |= btp->host_bits;
+ }
}
- return(alpha_mask);
+ return host_mask;
}
-unsigned int host_to_target_bitmask(unsigned int alpha_mask,
+unsigned int host_to_target_bitmask(unsigned int host_mask,
const bitmask_transtbl * trans_tbl)
{
const bitmask_transtbl *btp;
- unsigned int x86_mask = 0;
+ unsigned int target_mask = 0;
- for(btp = trans_tbl; btp->x86_mask && btp->alpha_mask; btp++) {
- if((alpha_mask & btp->alpha_mask) == btp->alpha_bits) {
- x86_mask |= btp->x86_bits;
- }
+ for (btp = trans_tbl; btp->target_mask && btp->host_mask; btp++) {
+ if ((host_mask & btp->host_mask) == btp->host_bits) {
+ target_mask |= btp->target_bits;
+ }
}
- return(x86_mask);
+ return target_mask;
}
-#ifndef NO_THUNK_TYPE_SIZE
int thunk_type_size_array(const argtype *type_ptr, int is_host)
{
return thunk_type_size(type_ptr, is_host);
@@ -315,7 +313,6 @@ int thunk_type_align_array(const argtype *type_ptr, int is_host)
{
return thunk_type_align(type_ptr, is_host);
}
-#endif /* ndef NO_THUNK_TYPE_SIZE */
void thunk_init(unsigned int max_structs)
{