9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync# Copyright (c) 2001, Stanford University
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync# All rights reserved.
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync# See the file LICENSE.txt for information on redistributing this software.
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync #apiutil.CopyrightC()
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # Get sorted list of dispatched functions.
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # The order is very important - it must match cr_opcodes.h
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # and spu_dispatch_table.h
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print '%include "iprt/asmdefs.mac"'
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%ifdef RT_ARCH_AMD64"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "extern glim"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%else ; X86"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "extern glim"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%endif"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync keys = apiutil.GetDispatchedFunctions(sys.argv[1]+"/APIspec.txt")
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%ifdef RT_ARCH_AMD64"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tjmp \t[rax]"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%else ; X86"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tjmp \t[eax]"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%endif"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print '; Aliases'
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # Now loop over all the functions and take care of any aliases
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync allkeys = apiutil.GetAllFunctions(sys.argv[1]+"/APIspec.txt")
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # we already processed this function earlier
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # alias is the function we're aliasing
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # this dict lookup should never fail (raise an exception)!
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%ifdef RT_ARCH_AMD64"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tjmp \t[rax]"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%else ; X86"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tjmp \t[eax]"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "%endif"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print '; No-op stubs'
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync # Now generate no-op stub functions
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tleave"
9a4748c9b04aa33bb54066d49bd27d4c9f0cf33evboxsync print "\tret"