# Copyright (c) 2001, Stanford University # All rights reserved. # # See the file LICENSE.txt for information on redistributing this software. import sys import apiutil def GenerateEntrypoints(): apiutil.CopyrightC() print '#include "chromium.h"' print '#include "stub.h"' print '' print '#define NAKED __declspec(naked)' print '#define UNUSED(x) ((void)(x))' print '' # Get sorted list of dispatched functions. # The order is very important - it must match cr_opcodes.h # and spu_dispatch_table.h keys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt") for index in range(len(keys)): func_name = keys[index] if apiutil.Category(func_name) == "Chromium": continue if apiutil.Category(func_name) == "VBox": continue return_type = apiutil.ReturnType(func_name) params = apiutil.Parameters(func_name) print "NAKED %s cr_gl%s( %s )" % (return_type, func_name, apiutil.MakeDeclarationString( params )) print "{" print "\t__asm jmp [glim.%s]" % func_name for (name, type, vecSize) in params: print "\tUNUSED( %s );" % name print "}" print "" print '/*' print '* Aliases' print '*/' # Now loop over all the functions and take care of any aliases allkeys = apiutil.GetAllFunctions(sys.argv[1]+"/APIspec.txt") for func_name in allkeys: if "omit" in apiutil.ChromiumProps(func_name): continue if func_name in keys: # we already processed this function earlier continue # alias is the function we're aliasing alias = apiutil.Alias(func_name) if alias: return_type = apiutil.ReturnType(func_name) params = apiutil.Parameters(func_name) print "NAKED %s cr_gl%s( %s )" % (return_type, func_name, apiutil.MakeDeclarationString( params )) print "{" print "\t__asm jmp [glim.%s]" % alias for (name, type, vecSize) in params: print "\tUNUSED( %s );" % name print "}" print "" print '/*' print '* No-op stubs' print '*/' # Now generate no-op stub functions for func_name in allkeys: if "stub" in apiutil.ChromiumProps(func_name): return_type = apiutil.ReturnType(func_name) params = apiutil.Parameters(func_name) print "NAKED %s cr_gl%s( %s )" % (return_type, func_name, apiutil.MakeDeclarationString(params)) print "{" if return_type != "void": print "return (%s) 0" % return_type print "}" print "" GenerateEntrypoints()