| @@ -52,7 +52,6 @@ set(HEADERS | |||||||
|             synchronized_wrapper.h |             synchronized_wrapper.h | ||||||
|             thread.h |             thread.h | ||||||
|             thread_queue_list.h |             thread_queue_list.h | ||||||
|             thunk.h |  | ||||||
|             timer.h |             timer.h | ||||||
|             vector_math.h |             vector_math.h | ||||||
|             ) |             ) | ||||||
|   | |||||||
| @@ -1,42 +0,0 @@ | |||||||
| // Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project |  | ||||||
| // Licensed under GPLv2 or any later version |  | ||||||
| // Refer to the license.txt file included. |  | ||||||
|  |  | ||||||
| #pragma once |  | ||||||
|  |  | ||||||
| #include <map> |  | ||||||
|  |  | ||||||
| #include "common/common_types.h" |  | ||||||
|  |  | ||||||
| // This simple class creates a wrapper around a C/C++ function that saves all fp state |  | ||||||
| // before entering it, and restores it upon exit. This is required to be able to selectively |  | ||||||
| // call functions from generated code, without inflicting the performance hit and increase |  | ||||||
| // of complexity that it means to protect the generated code from this problem. |  | ||||||
|  |  | ||||||
| // This process is called thunking. |  | ||||||
|  |  | ||||||
| // There will only ever be one level of thunking on the stack, plus, |  | ||||||
| // we don't want to pollute the stack, so we store away regs somewhere global. |  | ||||||
| // NOT THREAD SAFE. This may only be used from the CPU thread. |  | ||||||
| // Any other thread using this stuff will be FATAL. |  | ||||||
|  |  | ||||||
| class ThunkManager : public Gen::XCodeBlock |  | ||||||
| { |  | ||||||
|     std::map<void *, const u8 *> thunks; |  | ||||||
|  |  | ||||||
|     const u8 *save_regs; |  | ||||||
|     const u8 *load_regs; |  | ||||||
|  |  | ||||||
| public: |  | ||||||
|     ThunkManager() { |  | ||||||
|         Init(); |  | ||||||
|     } |  | ||||||
|     ~ThunkManager() { |  | ||||||
|         Shutdown(); |  | ||||||
|     } |  | ||||||
|     void *ProtectFunction(void *function, int num_params); |  | ||||||
| private: |  | ||||||
|     void Init(); |  | ||||||
|     void Shutdown(); |  | ||||||
|     void Reset(); |  | ||||||
| }; |  | ||||||
		Reference in New Issue
	
	Block a user
	 Yuri Kunde Schlesner
					Yuri Kunde Schlesner