X-Git-Url: http://git.squeep.com/?p=dcpu16;a=blobdiff_plain;f=dcpu16.h;fp=dcpu16.h;h=ebf20721051e11823f4113735d443a13541d56bd;hp=38203edfc52eee41553f9d28a1f9812d4b4c648f;hb=57241bb9e6f6b1acb019efe4f32eb758cf9e93d7;hpb=9e40f875436d85767042714823f47fdf136ba9b0 diff --git a/dcpu16.h b/dcpu16.h index 38203ed..ebf2072 100644 --- a/dcpu16.h +++ b/dcpu16.h @@ -68,6 +68,7 @@ struct dcpu16_acct_cb { }; typedef void (dcpu16_hw_signal_t)(struct dcpu16 *, void *); +typedef void (dcpu16_hw_data_free_t)(struct dcpu16_hw *); /* these are used to define hardware attached to the system */ struct dcpu16_hw { struct dcpu16 *vm; /* which system do I belong to */ @@ -82,9 +83,18 @@ struct dcpu16_hw { dcpu16_hw_signal_t *hwi; dcpu16_hw_signal_t *cycle; dcpu16_hw_signal_t *reset; + + dcpu16_hw_data_free_t *data_free; void *data; }; +typedef int (dcpu16_hw_data_init_t)(struct dcpu16_hw *, void *); +struct dcpu16_hw_module { + struct dcpu16_hw *template; + dcpu16_hw_data_init_t *data_init; + dcpu16_hw_data_free_t *data_free; +}; + /* instantiate a new core */ struct dcpu16 *dcpu16_new(void);