60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
/**
|
|
******************************************************************************
|
|
* Xenia : Xbox 360 Emulator Research Project *
|
|
******************************************************************************
|
|
* Copyright 2013 Ben Vanik. All rights reserved. *
|
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
******************************************************************************
|
|
*/
|
|
|
|
#include <xenia/kernel/xboxkrnl_misc.h>
|
|
|
|
#include <xenia/kernel/kernel_state.h>
|
|
#include <xenia/kernel/xboxkrnl_private.h>
|
|
#include <xenia/kernel/objects/xthread.h>
|
|
#include <xenia/kernel/util/shim_utils.h>
|
|
|
|
|
|
using namespace xe;
|
|
using namespace xe::kernel;
|
|
using namespace xe::kernel::xboxkrnl;
|
|
|
|
|
|
namespace xe {
|
|
namespace kernel {
|
|
|
|
|
|
void xeKeBugCheckEx(uint32_t code, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4) {
|
|
XELOGD("*** STOP: 0x%.8X (0x%.8X, 0x%.8X, 0x%.8X, 0x%.8X)", code, param1, param2, param3, param4);
|
|
fflush(stdout);
|
|
DebugBreak();
|
|
XEASSERTALWAYS();
|
|
}
|
|
|
|
SHIM_CALL KeBugCheck_shim(
|
|
PPCContext* ppc_state, KernelState* state) {
|
|
uint32_t code = SHIM_GET_ARG_32(0);
|
|
xeKeBugCheckEx(code, 0, 0, 0, 0);
|
|
}
|
|
|
|
SHIM_CALL KeBugCheckEx_shim(
|
|
PPCContext* ppc_state, KernelState* state) {
|
|
uint32_t code = SHIM_GET_ARG_32(0);
|
|
uint32_t param1 = SHIM_GET_ARG_32(1);
|
|
uint32_t param2 = SHIM_GET_ARG_32(2);
|
|
uint32_t param3 = SHIM_GET_ARG_32(3);
|
|
uint32_t param4 = SHIM_GET_ARG_32(4);
|
|
xeKeBugCheckEx(code, param1, param2, param3, param4);
|
|
}
|
|
|
|
|
|
} // namespace kernel
|
|
} // namespace xe
|
|
|
|
|
|
void xe::kernel::xboxkrnl::RegisterMiscExports(
|
|
ExportResolver* export_resolver, KernelState* state) {
|
|
SHIM_SET_MAPPING("xboxkrnl.exe", KeBugCheck, state);
|
|
SHIM_SET_MAPPING("xboxkrnl.exe", KeBugCheckEx, state);
|
|
}
|