mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-04 12:34:39 +08:00 
			
		
		
		
	Implement svcBreak
This commit is contained in:
		
							parent
							
								
									9fb9750411
								
							
						
					
					
						commit
						11057488f9
					
				@ -166,6 +166,10 @@ template<void func(const char*)> void Wrap() {
 | 
			
		||||
    func((char*)Memory::GetPointer(PARAM(0)));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<void func(u8)> void Wrap() {
 | 
			
		||||
    func((u8)PARAM(0));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#undef PARAM
 | 
			
		||||
#undef FuncReturn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -296,6 +296,18 @@ static ResultCode ArbitrateAddress(Handle handle, u32 address, u32 type, u32 val
 | 
			
		||||
    return res;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void Break(u8 break_reason) {
 | 
			
		||||
    LOG_CRITICAL(Debug_Emulated, "Emulated program broke execution!");
 | 
			
		||||
    std::string reason_str;
 | 
			
		||||
    switch (break_reason) {
 | 
			
		||||
    case 0: reason_str = "PANIC"; break;
 | 
			
		||||
    case 1: reason_str = "ASSERT"; break;
 | 
			
		||||
    case 2: reason_str = "USER"; break;
 | 
			
		||||
    default: reason_str = "UNKNOWN"; break;
 | 
			
		||||
    }
 | 
			
		||||
    LOG_CRITICAL(Debug_Emulated, "Break reason: %s", reason_str.c_str());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Used to output a message on a debug hardware unit - does nothing on a retail unit
 | 
			
		||||
static void OutputDebugString(const char* string) {
 | 
			
		||||
    LOG_DEBUG(Debug_Emulated, "%s", string);
 | 
			
		||||
@ -737,7 +749,7 @@ static const FunctionDef SVC_Table[] = {
 | 
			
		||||
    {0x39, HLE::Wrap<GetResourceLimitLimitValues>, "GetResourceLimitLimitValues"},
 | 
			
		||||
    {0x3A, HLE::Wrap<GetResourceLimitCurrentValues>, "GetResourceLimitCurrentValues"},
 | 
			
		||||
    {0x3B, nullptr,                         "GetThreadContext"},
 | 
			
		||||
    {0x3C, nullptr,                         "Break"},
 | 
			
		||||
    {0x3C, HLE::Wrap<Break>,                "Break"},
 | 
			
		||||
    {0x3D, HLE::Wrap<OutputDebugString>,    "OutputDebugString"},
 | 
			
		||||
    {0x3E, nullptr,                         "ControlPerformanceCounter"},
 | 
			
		||||
    {0x3F, nullptr,                         "Unknown"},
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user