e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# Copyright (c) 2001, Stanford University
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# All rights reserved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync# See the file LICENSE.txt for information on redistributing this software.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncimport sys
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncimport apiutil
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncapiutil.CopyrightC()
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncprint """
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync/* DO NOT EDIT - THIS FILE AUTOMATICALLY GENERATED BY spuchange.py SCRIPT */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_spu.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync#include "cr_error.h"
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncvoid crSPUChangeInterface( SPUDispatchTable *table, void *orig_func, void *new_func )
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync{
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync struct _copy_list_node *temp;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (table->mark == 1)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (orig_func == new_func)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync return;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync table->mark = 1;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync"""
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynckeys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt")
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncfor func_name in keys:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\tif ((void *)table->%s == orig_func)' % func_name
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t{'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t\ttable->%s = (%sFunc_t)new_func;' % (func_name, func_name)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t\tfor (temp = table->copyList ; temp ; temp = temp->next)'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t\t{'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t\t\tcrSPUChangeInterface( temp->copy, orig_func, new_func );'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t\t}'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync print '\t}'
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncprint """
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync if (table->copy_of != NULL)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crSPUChangeInterface( table->copy_of, orig_func, new_func );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync for (temp = table->copyList ; temp ; temp = temp->next)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync {
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync crSPUChangeInterface( temp->copy, orig_func, new_func );
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync }
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync table->mark = 0;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync"""
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsyncprint '}'
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsyncprint """
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsyncvoid crSPUChangeDispatch(SPUDispatchTable *dispatch, const SPUNamedFunctionTable *newtable)
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync{
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync SPUGenericFunction func;
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync"""
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsynckeys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt")
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsyncfor func_name in keys:
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\tfunc = crSPUFindFunction(newtable, "%s");' % func_name
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\tif (func && ((SPUGenericFunction)dispatch->%s!=func))' % func_name
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\t{'
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\t\tcrDebug("%%s changed from %%p to %%p", "gl%s", dispatch->%s, func);' % (func_name, func_name)
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\t\tcrSPUChangeInterface(dispatch, dispatch->%s, func);' % func_name
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync print '\t}\n'
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsyncprint """
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync}
8b5acc777c39ff8e124c6b57135d6d0adb1ca031vboxsync"""