void save_override( const ::boost::serialization::nvp< T > & t ){ save_start(t.name()); archive::save(* this->This(), t.const_value()); save_end(t.name()); }
void save_override( #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING const #endif ::boost::serialization::nvp<T> & t, int ){ save_start(t.name()); archive::save(* this->This(), t.const_value()); save_end(t.name()); }
static void __init setup_save( u32 *ptr, unsigned int *words_save, unsigned int *words_restore, u32 syncpt_id, u32 waitbase) { const struct hwctx_reginfo *r; const struct hwctx_reginfo *rend; unsigned int save = SAVE_BEGIN_SIZE + SAVE_END_SIZE; unsigned int restore = RESTORE_BEGIN_SIZE + RESTORE_END_SIZE; if (ptr) { save_begin(ptr, syncpt_id, waitbase); ptr += SAVE_BEGIN_SIZE; } r = ctxsave_regs_3d; rend = ctxsave_regs_3d + ARRAY_SIZE(ctxsave_regs_3d); for ( ; r != rend; ++r) { u32 offset = r->offset; u32 count = r->count; switch (r->type) { case HWCTX_REGINFO_DIRECT: if (ptr) { save_direct(ptr, offset, count); ptr += SAVE_DIRECT_SIZE; } save += SAVE_DIRECT_SIZE; restore += RESTORE_DIRECT_SIZE; break; case HWCTX_REGINFO_INDIRECT: if (ptr) { save_indoffset(ptr, offset, 0); ptr += SAVE_INDOFFSET_SIZE; save_inddata(ptr, offset + 1, count); ptr += SAVE_INDDDATA_SIZE; } save += SAVE_INDOFFSET_SIZE; restore += RESTORE_INDOFFSET_SIZE; save += SAVE_INDDDATA_SIZE; restore += RESTORE_INDDATA_SIZE; break; case HWCTX_REGINFO_INDIRECT_OFFSET: if (ptr) { save_indoffset(ptr, offset, count); ptr += SAVE_INDOFFSET_SIZE; } save += SAVE_INDOFFSET_SIZE; restore += RESTORE_INDOFFSET_SIZE; continue; /* INDIRECT_DATA follows with real count */ case HWCTX_REGINFO_INDIRECT_DATA: if (ptr) { save_inddata(ptr, offset, count); ptr += SAVE_INDDDATA_SIZE; } save += SAVE_INDDDATA_SIZE; restore += RESTORE_INDDATA_SIZE; break; } if (ptr) { memset(ptr, 0, count * 4); ptr += count; } save += count; restore += count; } if (ptr) save_end(ptr, syncpt_id, waitbase); if (words_save) *words_save = save; if (words_restore) *words_restore = restore; wmb(); }