Remove every trailing whitespace from the project (but externals).
This commit is contained in:
parent
fb597b6d68
commit
b1503b2020
65 changed files with 212 additions and 212 deletions
|
@ -813,7 +813,7 @@ Opcode ARM_Disasm::Decode11(uint32_t insn) {
|
|||
// SWI
|
||||
return OP_SWI;
|
||||
}
|
||||
|
||||
|
||||
uint8_t bit4 = (insn >> 4) & 0x1;
|
||||
uint8_t cpnum = (insn >> 8) & 0xf;
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ static unsigned int DPO(Immediate)(ARMul_State* cpu, unsigned int sht_oper) {
|
|||
unsigned int immed_8 = BITS(sht_oper, 0, 7);
|
||||
unsigned int rotate_imm = BITS(sht_oper, 8, 11);
|
||||
unsigned int shifter_operand = ROTATE_RIGHT_32(immed_8, rotate_imm * 2);
|
||||
if (rotate_imm == 0)
|
||||
if (rotate_imm == 0)
|
||||
cpu->shifter_carry_out = cpu->CFlag;
|
||||
else
|
||||
cpu->shifter_carry_out = BIT(shifter_operand, 31);
|
||||
|
@ -521,7 +521,7 @@ static void MLnS(ImmediateOffset)(ARMul_State* cpu, unsigned int inst, unsigned
|
|||
addr = CHECK_READ_REG15_WA(cpu, Rn) + offset_8;
|
||||
else
|
||||
addr = CHECK_READ_REG15_WA(cpu, Rn) - offset_8;
|
||||
|
||||
|
||||
virt_addr = addr;
|
||||
}
|
||||
|
||||
|
@ -550,7 +550,7 @@ static void MLnS(ImmediatePreIndexed)(ARMul_State* cpu, unsigned int inst, unsig
|
|||
|
||||
if (U_BIT)
|
||||
addr = rn + offset_8;
|
||||
else
|
||||
else
|
||||
addr = rn - offset_8;
|
||||
|
||||
virt_addr = addr;
|
||||
|
@ -1306,8 +1306,8 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(and)(unsigned int inst, int index)
|
|||
inst_cream->Rd = BITS(inst, 12, 15);
|
||||
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
||||
inst_cream->shtop_func = get_shtop(inst);
|
||||
|
||||
if (inst_cream->Rd == 15)
|
||||
|
||||
if (inst_cream->Rd == 15)
|
||||
inst_base->br = INDIRECT_BRANCH;
|
||||
|
||||
return inst_base;
|
||||
|
@ -1350,7 +1350,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(bic)(unsigned int inst, int index)
|
|||
inst_cream->shifter_operand = BITS(inst, 0, 11);
|
||||
inst_cream->shtop_func = get_shtop(inst);
|
||||
|
||||
if (inst_cream->Rd == 15)
|
||||
if (inst_cream->Rd == 15)
|
||||
inst_base->br = INDIRECT_BRANCH;
|
||||
return inst_base;
|
||||
}
|
||||
|
@ -3269,7 +3269,7 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(yield)(unsigned int inst, int index)
|
|||
#define VFP_INTERPRETER_STRUCT
|
||||
#include "core/arm/skyeye_common/vfp/vfpinstr.cpp"
|
||||
#undef VFP_INTERPRETER_STRUCT
|
||||
|
||||
|
||||
#define VFP_INTERPRETER_TRANS
|
||||
#include "core/arm/skyeye_common/vfp/vfpinstr.cpp"
|
||||
#undef VFP_INTERPRETER_TRANS
|
||||
|
@ -3478,9 +3478,9 @@ const transop_fp_t arm_instruction_trans[] = {
|
|||
INTERPRETER_TRANSLATE(bbl),
|
||||
|
||||
// All the thumb instructions should be placed the end of table
|
||||
INTERPRETER_TRANSLATE(b_2_thumb),
|
||||
INTERPRETER_TRANSLATE(b_cond_thumb),
|
||||
INTERPRETER_TRANSLATE(bl_1_thumb),
|
||||
INTERPRETER_TRANSLATE(b_2_thumb),
|
||||
INTERPRETER_TRANSLATE(b_cond_thumb),
|
||||
INTERPRETER_TRANSLATE(bl_1_thumb),
|
||||
INTERPRETER_TRANSLATE(bl_2_thumb),
|
||||
INTERPRETER_TRANSLATE(blx_1_thumb)
|
||||
};
|
||||
|
@ -4338,7 +4338,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
}
|
||||
}
|
||||
if (BIT(inst, 13)) {
|
||||
if (cpu->Mode == USER32MODE)
|
||||
if (cpu->Mode == USER32MODE)
|
||||
cpu->Reg[13] = ReadMemory32(cpu, addr);
|
||||
else
|
||||
cpu->Reg_usr[0] = ReadMemory32(cpu, addr);
|
||||
|
@ -4346,7 +4346,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
addr += 4;
|
||||
}
|
||||
if (BIT(inst, 14)) {
|
||||
if (cpu->Mode == USER32MODE)
|
||||
if (cpu->Mode == USER32MODE)
|
||||
cpu->Reg[14] = ReadMemory32(cpu, addr);
|
||||
else
|
||||
cpu->Reg_usr[1] = ReadMemory32(cpu, addr);
|
||||
|
@ -5148,7 +5148,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
REV16_INST:
|
||||
REVSH_INST:
|
||||
{
|
||||
|
||||
|
||||
if (inst_base->cond == 0xE || CondPassed(cpu, inst_base->cond)) {
|
||||
rev_inst* const inst_cream = (rev_inst*)inst_base->component;
|
||||
|
||||
|
@ -5721,7 +5721,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
|
||||
if (do_swap)
|
||||
rm_val = (((rm_val & 0xFFFF) << 16) | (rm_val >> 16));
|
||||
|
||||
|
||||
const s32 product1 = (s16)(rn_val & 0xFFFF) * (s16)(rm_val & 0xFFFF);
|
||||
const s32 product2 = (s16)((rn_val >> 16) & 0xFFFF) * (s16)((rm_val >> 16) & 0xFFFF);
|
||||
s64 result;
|
||||
|
@ -6583,7 +6583,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
{
|
||||
u32 lo_val = 0;
|
||||
u32 hi_val = 0;
|
||||
|
||||
|
||||
// UHADD16
|
||||
if (op2 == 0x00) {
|
||||
lo_val = (rn_val & 0xFFFF) + (rm_val & 0xFFFF);
|
||||
|
@ -6772,7 +6772,7 @@ unsigned InterpreterMainLoop(ARMul_State* cpu) {
|
|||
|
||||
u16 lo_val = 0;
|
||||
u16 hi_val = 0;
|
||||
|
||||
|
||||
// UQADD16
|
||||
if (op2 == 0x00) {
|
||||
lo_val = ARMul_UnsignedSaturatedAdd16(rn_val & 0xFFFF, rm_val & 0xFFFF);
|
||||
|
|
|
@ -184,7 +184,7 @@ tdstate thumb_translate(u32 addr, u32 instr, u32* ainstr, u32* inst_size) {
|
|||
case 9: // LDR Rd,[PC,#imm8]
|
||||
*ainstr = 0xE59F0000 // base
|
||||
| ((tinstr & 0x0700) << (12 - 8)) // Rd
|
||||
|((tinstr & 0x00FF) << (2 - 0)); // off8
|
||||
|((tinstr & 0x00FF) << (2 - 0)); // off8
|
||||
break;
|
||||
|
||||
case 10:
|
||||
|
|
|
@ -628,7 +628,7 @@ void WriteCP15Register(ARMul_State* cpu, u32 value, u32 crn, u32 opcode_1, u32 c
|
|||
cpu->CP15[CP15_DATA_SYNC_BARRIER] = value;
|
||||
else if (opcode_2 == 5)
|
||||
cpu->CP15[CP15_DATA_MEMORY_BARRIER] = value;
|
||||
|
||||
|
||||
}
|
||||
else if (crn == 13 && opcode_1 == 0 && crm == 0 && opcode_2 == 2)
|
||||
{
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
/* armdefs.h -- ARMulator common definitions: ARM6 Instruction Emulator.
|
||||
Copyright (C) 1994 Advanced RISC Machines Ltd.
|
||||
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* The following code is derivative from Linux Android kernel vfp
|
||||
* floating point support.
|
||||
*
|
||||
*
|
||||
* Copyright (C) 2004 ARM Limited.
|
||||
* Written by Deep Blue Solutions Limited.
|
||||
*
|
||||
|
|
|
@ -549,7 +549,7 @@ std::string GetScheduledEventsSummary() {
|
|||
const char* name = event_types[event->type].name;
|
||||
if (!name)
|
||||
name = "[unknown]";
|
||||
text += Common::StringFromFormat("%s : %i %08x%08x\n", name, (int)event->time,
|
||||
text += Common::StringFromFormat("%s : %i %08x%08x\n", name, (int)event->time,
|
||||
(u32)(event->userdata >> 32), (u32)(event->userdata));
|
||||
event = event->next;
|
||||
}
|
||||
|
|
|
@ -87,7 +87,7 @@ void UnregisterAllEvents();
|
|||
/// userdata MAY NOT CONTAIN POINTERS. userdata might get written and reloaded from disk,
|
||||
/// when we implement state saves.
|
||||
/**
|
||||
* Schedules an event to run after the specified number of cycles,
|
||||
* Schedules an event to run after the specified number of cycles,
|
||||
* with an optional parameter to be passed to the callback handler.
|
||||
* This must be run ONLY from within the cpu thread.
|
||||
* @param cycles_into_future The number of cycles after which this event will be fired
|
||||
|
|
|
@ -30,8 +30,8 @@ std::string GetExtSaveDataPath(const std::string& mount_point, const Path& path)
|
|||
std::string GetExtDataContainerPath(const std::string& mount_point, bool shared) {
|
||||
if (shared)
|
||||
return Common::StringFromFormat("%sdata/%s/extdata/", mount_point.c_str(), SYSTEM_ID.c_str());
|
||||
|
||||
return Common::StringFromFormat("%sNintendo 3DS/%s/%s/extdata/", mount_point.c_str(),
|
||||
|
||||
return Common::StringFromFormat("%sNintendo 3DS/%s/%s/extdata/", mount_point.c_str(),
|
||||
SYSTEM_ID.c_str(), SDCARD_ID.c_str());
|
||||
}
|
||||
|
||||
|
|
|
@ -35,14 +35,14 @@ public:
|
|||
private:
|
||||
/**
|
||||
* This holds the full directory path for this archive, it is only set after a successful call
|
||||
* to Open, this is formed as <base extsavedatapath>/<type>/<high>/<low>.
|
||||
* to Open, this is formed as <base extsavedatapath>/<type>/<high>/<low>.
|
||||
* See GetExtSaveDataPath for the code that extracts this data from an archive path.
|
||||
*/
|
||||
std::string mount_point;
|
||||
};
|
||||
|
||||
/**
|
||||
* Constructs a path to the concrete ExtData archive in the host filesystem based on the
|
||||
* Constructs a path to the concrete ExtData archive in the host filesystem based on the
|
||||
* input Path and base mount point.
|
||||
* @param mount_point The base mount point of the ExtSaveData archives.
|
||||
* @param path The path that identifies the requested concrete ExtSaveData archive.
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
namespace FileSys {
|
||||
|
||||
static std::string GetSaveDataContainerPath(const std::string& sdmc_directory) {
|
||||
return Common::StringFromFormat("%sNintendo 3DS/%s/%s/title/", sdmc_directory.c_str(),
|
||||
return Common::StringFromFormat("%sNintendo 3DS/%s/%s/title/", sdmc_directory.c_str(),
|
||||
SYSTEM_ID.c_str(), SDCARD_ID.c_str());
|
||||
}
|
||||
|
||||
|
|
|
@ -81,13 +81,13 @@ public:
|
|||
s32 max_timers = 0;
|
||||
s32 max_shared_mems = 0;
|
||||
s32 max_address_arbiters = 0;
|
||||
|
||||
|
||||
/// Max CPU time that the processes in this category can utilize
|
||||
s32 max_cpu_time = 0;
|
||||
|
||||
// TODO(Subv): Increment these in their respective Kernel::T::Create functions, keeping in mind that
|
||||
// APPLICATION resource limits should not be affected by the objects created by service modules.
|
||||
// Currently we have no way of distinguishing if a Create was called by the running application,
|
||||
// TODO(Subv): Increment these in their respective Kernel::T::Create functions, keeping in mind that
|
||||
// APPLICATION resource limits should not be affected by the objects created by service modules.
|
||||
// Currently we have no way of distinguishing if a Create was called by the running application,
|
||||
// or by a service module. Approach this once we have separated the service modules into their own processes
|
||||
|
||||
/// Current memory that the processes in this category are using
|
||||
|
|
|
@ -42,7 +42,7 @@ void Semaphore::Acquire() {
|
|||
|
||||
ResultVal<s32> Semaphore::Release(s32 release_count) {
|
||||
if (max_count - available_count < release_count)
|
||||
return ResultCode(ErrorDescription::OutOfRange, ErrorModule::Kernel,
|
||||
return ResultCode(ErrorDescription::OutOfRange, ErrorModule::Kernel,
|
||||
ErrorSummary::InvalidArgument, ErrorLevel::Permanent);
|
||||
|
||||
s32 previous_count = available_count;
|
||||
|
|
|
@ -100,7 +100,7 @@ void Thread::Stop() {
|
|||
}
|
||||
|
||||
status = THREADSTATUS_DEAD;
|
||||
|
||||
|
||||
WakeupAllWaitingThreads();
|
||||
|
||||
// Clean up any dangling references in objects that this thread was waiting for
|
||||
|
@ -169,7 +169,7 @@ static void PriorityBoostStarvedThreads() {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* Switches the CPU's active thread context to that of the specified thread
|
||||
* @param new_thread The thread to switch to
|
||||
*/
|
||||
|
@ -353,7 +353,7 @@ void Thread::ResumeFromWait() {
|
|||
GetObjectId());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
ready_queue.push_back(current_priority, this);
|
||||
status = THREADSTATUS_READY;
|
||||
}
|
||||
|
@ -504,7 +504,7 @@ void Reschedule() {
|
|||
} else if (next) {
|
||||
LOG_TRACE(Kernel, "context switch idle -> %u", next->GetObjectId());
|
||||
}
|
||||
|
||||
|
||||
SwitchContext(next);
|
||||
}
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ public:
|
|||
* @return The thread's ID
|
||||
*/
|
||||
u32 GetThreadId() const { return thread_id; }
|
||||
|
||||
|
||||
/**
|
||||
* Release an acquired wait object
|
||||
* @param wait_object WaitObject to release
|
||||
|
|
|
@ -88,7 +88,7 @@ static void TimerCallback(u64 timer_handle, int cycles_late) {
|
|||
if (timer->interval_delay != 0) {
|
||||
// Reschedule the timer with the interval delay
|
||||
u64 interval_microseconds = timer->interval_delay / 1000;
|
||||
CoreTiming::ScheduleEvent(usToCycles(interval_microseconds) - cycles_late,
|
||||
CoreTiming::ScheduleEvent(usToCycles(interval_microseconds) - cycles_late,
|
||||
timer_callback_event_type, timer_handle);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ void SendParameter(Service::Interface* self) {
|
|||
u32 handle = cmd_buff[6];
|
||||
u32 size = cmd_buff[7];
|
||||
u32 in_param_buffer_ptr = cmd_buff[8];
|
||||
|
||||
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw; // No error
|
||||
|
||||
LOG_WARNING(Service_APT, "(STUBBED) called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X,"
|
||||
|
@ -283,7 +283,7 @@ void Init() {
|
|||
AddService(new APT_A_Interface);
|
||||
AddService(new APT_S_Interface);
|
||||
AddService(new APT_U_Interface);
|
||||
|
||||
|
||||
// Load the shared system font (if available).
|
||||
// The expected format is a decrypted, uncompressed BCFNT file with the 0x80 byte header
|
||||
// generated by the APT:U service. The best way to get is by dumping it from RAM. We've provided
|
||||
|
|
|
@ -63,7 +63,7 @@ void Initialize(Service::Interface* self);
|
|||
* 4 : Handle to shared font memory
|
||||
*/
|
||||
void GetSharedFont(Service::Interface* self);
|
||||
|
||||
|
||||
/**
|
||||
* APT::NotifyToWait service function
|
||||
* Inputs:
|
||||
|
@ -88,7 +88,7 @@ void Enable(Service::Interface* self);
|
|||
* 4 : Home Menu AppId
|
||||
* 5 : AppID of currently active app
|
||||
*/
|
||||
void GetAppletManInfo(Service::Interface* self);
|
||||
void GetAppletManInfo(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* APT::IsRegistered service function. This returns whether the specified AppID is registered with NS yet.
|
||||
|
@ -100,14 +100,14 @@ void GetAppletManInfo(Service::Interface* self);
|
|||
* Outputs:
|
||||
* 0 : Return header
|
||||
* 1 : Result of function, 0 on success, otherwise error code
|
||||
* 2 : Output, 0 = not registered, 1 = registered.
|
||||
* 2 : Output, 0 = not registered, 1 = registered.
|
||||
*/
|
||||
void IsRegistered(Service::Interface* self);
|
||||
|
||||
void InquireNotification(Service::Interface* self);
|
||||
|
||||
/**
|
||||
* APT::SendParameter service function. This sets the parameter data state.
|
||||
* APT::SendParameter service function. This sets the parameter data state.
|
||||
* Inputs:
|
||||
* 1 : Source AppID
|
||||
* 2 : Destination AppID
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace BOSS_P {
|
|||
class Interface : public Service::Interface {
|
||||
public:
|
||||
Interface();
|
||||
|
||||
|
||||
std::string GetPortName() const override {
|
||||
return "boss:P";
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace BOSS_U {
|
|||
class Interface : public Service::Interface {
|
||||
public:
|
||||
Interface();
|
||||
|
||||
|
||||
std::string GetPortName() const override {
|
||||
return "boss:U";
|
||||
}
|
||||
|
|
|
@ -19,5 +19,5 @@ namespace CAM_U {
|
|||
Interface::Interface() {
|
||||
//Register(FunctionTable);
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -315,11 +315,11 @@ void Init() {
|
|||
AddService(new CFG_I_Interface);
|
||||
AddService(new CFG_S_Interface);
|
||||
AddService(new CFG_U_Interface);
|
||||
|
||||
|
||||
// Open the SystemSaveData archive 0x00010017
|
||||
FileSys::Path archive_path(cfg_system_savedata_id);
|
||||
auto archive_result = Service::FS::OpenArchive(Service::FS::ArchiveIdCode::SystemSaveData, archive_path);
|
||||
|
||||
|
||||
// If the archive didn't exist, create the files inside
|
||||
if (archive_result.Code().description == ErrorDescription::FS_NotFormatted) {
|
||||
// Format the archive to create the directories
|
||||
|
|
|
@ -254,7 +254,7 @@ ResultVal<ArchiveHandle> OpenArchive(ArchiveIdCode id_code, FileSys::Path& archi
|
|||
|
||||
CASCADE_RESULT(std::unique_ptr<ArchiveBackend> res, itr->second->Open(archive_path));
|
||||
|
||||
// This should never even happen in the first place with 64-bit handles,
|
||||
// This should never even happen in the first place with 64-bit handles,
|
||||
while (handle_map.count(next_handle) != 0) {
|
||||
++next_handle;
|
||||
}
|
||||
|
@ -488,7 +488,7 @@ void ArchiveInit() {
|
|||
RegisterArchiveType(std::move(sdmc_factory), ArchiveIdCode::SDMC);
|
||||
else
|
||||
LOG_ERROR(Service_FS, "Can't instantiate SDMC archive with path %s", sdmc_directory.c_str());
|
||||
|
||||
|
||||
// Create the SaveData archive
|
||||
auto savedata_factory = Common::make_unique<FileSys::ArchiveFactory_SaveData>(sdmc_directory);
|
||||
RegisterArchiveType(std::move(savedata_factory), ArchiveIdCode::SaveData);
|
||||
|
@ -503,7 +503,7 @@ void ArchiveInit() {
|
|||
if (sharedextsavedata_factory->Initialize())
|
||||
RegisterArchiveType(std::move(sharedextsavedata_factory), ArchiveIdCode::SharedExtSaveData);
|
||||
else
|
||||
LOG_ERROR(Service_FS, "Can't instantiate SharedExtSaveData archive with path %s",
|
||||
LOG_ERROR(Service_FS, "Can't instantiate SharedExtSaveData archive with path %s",
|
||||
sharedextsavedata_factory->GetMountPoint().c_str());
|
||||
|
||||
// Create the SaveDataCheck archive, basically a small variation of the RomFS archive
|
||||
|
|
|
@ -434,7 +434,7 @@ static void IsSdmcWriteable(Service::Interface* self) {
|
|||
}
|
||||
|
||||
/**
|
||||
* FS_User::FormatSaveData service function,
|
||||
* FS_User::FormatSaveData service function,
|
||||
* formats the SaveData specified by the input path.
|
||||
* Inputs:
|
||||
* 0 : 0x084C0242
|
||||
|
@ -520,7 +520,7 @@ static void CreateExtSaveData(Service::Interface* self) {
|
|||
LOG_WARNING(Service_FS, "(STUBBED) savedata_high=%08X savedata_low=%08X cmd_buff[3]=%08X "
|
||||
"cmd_buff[4]=%08X cmd_buff[5]=%08X cmd_buff[6]=%08X cmd_buff[7]=%08X cmd_buff[8]=%08X "
|
||||
"cmd_buff[9]=%08X cmd_buff[10]=%08X cmd_buff[11]=%08X", save_high, save_low,
|
||||
cmd_buff[3], cmd_buff[4], cmd_buff[5], cmd_buff[6], cmd_buff[7], cmd_buff[8], cmd_buff[9],
|
||||
cmd_buff[3], cmd_buff[4], cmd_buff[5], cmd_buff[6], cmd_buff[7], cmd_buff[8], cmd_buff[9],
|
||||
cmd_buff[10], cmd_buff[11]);
|
||||
|
||||
cmd_buff[1] = CreateExtSaveData(media_type, save_high, save_low).raw;
|
||||
|
@ -544,7 +544,7 @@ static void DeleteExtSaveData(Service::Interface* self) {
|
|||
u32 save_high = cmd_buff[3];
|
||||
u32 unknown = cmd_buff[4]; // TODO(Subv): Figure out what this is
|
||||
|
||||
LOG_WARNING(Service_FS, "(STUBBED) save_low=%08X save_high=%08X media_type=%08X unknown=%08X",
|
||||
LOG_WARNING(Service_FS, "(STUBBED) save_low=%08X save_high=%08X media_type=%08X unknown=%08X",
|
||||
save_low, save_high, cmd_buff[1] & 0xFF, unknown);
|
||||
|
||||
cmd_buff[1] = DeleteExtSaveData(media_type, save_high, save_low).raw;
|
||||
|
|
|
@ -167,7 +167,7 @@ static void WriteHWRegsWithMask(Service::Interface* self) {
|
|||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
u32 reg_addr = cmd_buff[1];
|
||||
u32 size = cmd_buff[2];
|
||||
|
||||
|
||||
u32* src_data = (u32*)Memory::GetPointer(cmd_buff[4]);
|
||||
u32* mask_data = (u32*)Memory::GetPointer(cmd_buff[6]);
|
||||
|
||||
|
@ -208,21 +208,21 @@ static void SetBufferSwap(u32 screen_id, const FrameBufferInfo& info) {
|
|||
PAddr phys_address_left = Memory::VirtualToPhysicalAddress(info.address_left);
|
||||
PAddr phys_address_right = Memory::VirtualToPhysicalAddress(info.address_right);
|
||||
if (info.active_fb == 0) {
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left1)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left1)), 4,
|
||||
&phys_address_left);
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right1)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right1)), 4,
|
||||
&phys_address_right);
|
||||
} else {
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left2)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left2)), 4,
|
||||
&phys_address_left);
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right2)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right2)), 4,
|
||||
&phys_address_right);
|
||||
}
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].stride)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].stride)), 4,
|
||||
&info.stride);
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].color_format)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].color_format)), 4,
|
||||
&info.format);
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].active_fb)), 4,
|
||||
WriteHWRegs(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].active_fb)), 4,
|
||||
&info.shown_fb);
|
||||
}
|
||||
|
||||
|
@ -374,7 +374,7 @@ static void ExecuteCommand(const Command& command, u32 thread_id) {
|
|||
{
|
||||
auto& params = command.set_command_list_last;
|
||||
|
||||
WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(command_processor_config.address)),
|
||||
WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(command_processor_config.address)),
|
||||
Memory::VirtualToPhysicalAddress(params.address) >> 3);
|
||||
WriteGPURegister(static_cast<u32>(GPU_REG_INDEX(command_processor_config.size)), params.size);
|
||||
|
||||
|
@ -470,7 +470,7 @@ static void SetLcdForceBlack(Service::Interface* self) {
|
|||
|
||||
LCD::Write(HW::VADDR_LCD + 4 * LCD_REG_INDEX(color_fill_top), data.raw); // Top LCD
|
||||
LCD::Write(HW::VADDR_LCD + 4 * LCD_REG_INDEX(color_fill_bottom), data.raw); // Bottom LCD
|
||||
|
||||
|
||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||
}
|
||||
|
||||
|
@ -516,8 +516,8 @@ static void TriggerCmdReqQueue(Service::Interface* self) {
|
|||
*/
|
||||
static void ImportDisplayCaptureInfo(Service::Interface* self) {
|
||||
u32* cmd_buff = Kernel::GetCommandBuffer();
|
||||
|
||||
// TODO(Subv): We're always returning the framebuffer structures for thread_id = 0,
|
||||
|
||||
// TODO(Subv): We're always returning the framebuffer structures for thread_id = 0,
|
||||
// because we only support a single running application at a time.
|
||||
// This should always return the framebuffer data that is currently displayed on the screen.
|
||||
|
||||
|
|
|
@ -106,7 +106,7 @@ void Update() {
|
|||
mem->touch.index_reset_ticks_previous = mem->touch.index_reset_ticks;
|
||||
mem->touch.index_reset_ticks = (s64)CoreTiming::GetTicks();
|
||||
}
|
||||
|
||||
|
||||
// Signal both handles when there's an update to Pad or touch
|
||||
event_pad_or_touch_1->Signal();
|
||||
event_pad_or_touch_2->Signal();
|
||||
|
|
|
@ -25,6 +25,6 @@ const Interface::FunctionInfo FunctionTable[] = {
|
|||
HID_SPVR_Interface::HID_SPVR_Interface() {
|
||||
Register(FunctionTable);
|
||||
}
|
||||
|
||||
|
||||
} // namespace HID
|
||||
} // namespace Service
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
namespace Service {
|
||||
namespace HID {
|
||||
|
||||
|
||||
/**
|
||||
* HID service interface.
|
||||
*/
|
||||
|
|
|
@ -20,15 +20,15 @@ enum class ChargeLevels : u32 {
|
|||
CompletelyFull = 5,
|
||||
};
|
||||
|
||||
/**
|
||||
/**
|
||||
* Represents the gamecoin file structure in the SharedExtData archive
|
||||
* More information in 3dbrew (http://www.3dbrew.org/wiki/Extdata#Shared_Extdata_0xf000000b_gamecoin.dat)
|
||||
*/
|
||||
struct GameCoin {
|
||||
u32 magic; ///< Magic number: 0x4F00
|
||||
u16 total_coins; ///< Total Play Coins
|
||||
u16 total_coins; ///< Total Play Coins
|
||||
u16 total_coins_on_date; ///< Total Play Coins obtained on the date stored below.
|
||||
u32 step_count; ///< Total step count at the time a new Play Coin was obtained.
|
||||
u32 step_count; ///< Total step count at the time a new Play Coin was obtained.
|
||||
u32 last_step_count; ///< Step count for the day the last Play Coin was obtained
|
||||
u16 year;
|
||||
u8 month;
|
||||
|
|
|
@ -18,6 +18,6 @@ const Interface::FunctionInfo FunctionTable[] = {
|
|||
PTM_Play_Interface::PTM_Play_Interface() {
|
||||
Register(FunctionTable);
|
||||
}
|
||||
|
||||
|
||||
} // namespace PTM
|
||||
} // namespace Service
|
|
@ -52,7 +52,7 @@ std::unordered_map<std::string, Kernel::SharedPtr<Interface>> g_kernel_named_por
|
|||
std::unordered_map<std::string, Kernel::SharedPtr<Interface>> g_srv_services;
|
||||
|
||||
/**
|
||||
* Creates a function string for logging, complete with the name (or header code, depending
|
||||
* Creates a function string for logging, complete with the name (or header code, depending
|
||||
* on what's passed in) the port name, and all the cmd_buff arguments.
|
||||
*/
|
||||
static std::string MakeFunctionString(const char* name, const char* port_name, const u32* cmd_buff) {
|
||||
|
|
|
@ -139,7 +139,7 @@ static int TranslateError(int error) {
|
|||
auto found = error_map.find(error);
|
||||
if (found != error_map.end())
|
||||
return -found->second;
|
||||
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
|
@ -346,7 +346,7 @@ static void Bind(Service::Interface* self) {
|
|||
sockaddr sock_addr = CTRSockAddr::ToPlatform(*ctr_sock_addr);
|
||||
|
||||
int res = ::bind(socket_handle, &sock_addr, std::max<u32>(sizeof(sock_addr), len));
|
||||
|
||||
|
||||
int result = 0;
|
||||
if (res != 0)
|
||||
result = TranslateError(GET_ERRNO);
|
||||
|
@ -360,14 +360,14 @@ static void Fcntl(Service::Interface* self) {
|
|||
u32 socket_handle = cmd_buffer[1];
|
||||
u32 ctr_cmd = cmd_buffer[2];
|
||||
u32 ctr_arg = cmd_buffer[3];
|
||||
|
||||
|
||||
int result = 0;
|
||||
u32 posix_ret = 0; // TODO: Check what hardware returns for F_SETFL (unspecified by POSIX)
|
||||
SCOPE_EXIT({
|
||||
cmd_buffer[1] = result;
|
||||
cmd_buffer[2] = posix_ret;
|
||||
});
|
||||
|
||||
|
||||
if (ctr_cmd == 3) { // F_GETFL
|
||||
#if EMU_PLATFORM == PLATFORM_WINDOWS
|
||||
posix_ret = 0;
|
||||
|
@ -404,11 +404,11 @@ static void Fcntl(Service::Interface* self) {
|
|||
posix_ret = -1;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
flags &= ~O_NONBLOCK;
|
||||
if (ctr_arg & 4) // O_NONBLOCK
|
||||
flags |= O_NONBLOCK;
|
||||
|
||||
|
||||
int ret = ::fcntl(socket_handle, F_SETFL, flags);
|
||||
if (ret == SOCKET_ERROR_VALUE) {
|
||||
result = TranslateError(GET_ERRNO);
|
||||
|
@ -439,8 +439,8 @@ static void Listen(Service::Interface* self) {
|
|||
}
|
||||
|
||||
static void Accept(Service::Interface* self) {
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// performing nonblocking operations and spinlock until the data is available
|
||||
u32* cmd_buffer = Kernel::GetCommandBuffer();
|
||||
u32 socket_handle = cmd_buffer[1];
|
||||
|
@ -448,7 +448,7 @@ static void Accept(Service::Interface* self) {
|
|||
sockaddr addr;
|
||||
socklen_t addr_len = sizeof(addr);
|
||||
u32 ret = static_cast<u32>(::accept(socket_handle, &addr, &addr_len));
|
||||
|
||||
|
||||
if ((s32)ret != SOCKET_ERROR_VALUE)
|
||||
open_sockets[ret] = { ret, true };
|
||||
|
||||
|
@ -525,8 +525,8 @@ static void SendTo(Service::Interface* self) {
|
|||
}
|
||||
|
||||
static void RecvFrom(Service::Interface* self) {
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// performing nonblocking operations and spinlock until the data is available
|
||||
u32* cmd_buffer = Kernel::GetCommandBuffer();
|
||||
u32 socket_handle = cmd_buffer[1];
|
||||
|
@ -568,7 +568,7 @@ static void Poll(Service::Interface* self) {
|
|||
pollfd* platform_pollfd = new pollfd[nfds];
|
||||
for (unsigned current_fds = 0; current_fds < nfds; ++current_fds)
|
||||
platform_pollfd[current_fds] = CTRPollFD::ToPlatform(input_fds[current_fds]);
|
||||
|
||||
|
||||
int ret = ::poll(platform_pollfd, nfds, timeout);
|
||||
|
||||
// Now update the output pollfd structure
|
||||
|
@ -630,7 +630,7 @@ static void GetPeerName(Service::Interface* self) {
|
|||
socklen_t len = cmd_buffer[2];
|
||||
|
||||
CTRSockAddr* ctr_dest_addr = reinterpret_cast<CTRSockAddr*>(Memory::GetPointer(cmd_buffer[0x104 >> 2]));
|
||||
|
||||
|
||||
sockaddr dest_addr;
|
||||
socklen_t dest_addr_len = sizeof(dest_addr);
|
||||
int ret = ::getpeername(socket_handle, &dest_addr, &dest_addr_len);
|
||||
|
@ -651,8 +651,8 @@ static void GetPeerName(Service::Interface* self) {
|
|||
}
|
||||
|
||||
static void Connect(Service::Interface* self) {
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// TODO(Subv): Calling this function on a blocking socket will block the emu thread,
|
||||
// preventing graceful shutdown when closing the emulator, this can be fixed by always
|
||||
// performing nonblocking operations and spinlock until the data is available
|
||||
u32* cmd_buffer = Kernel::GetCommandBuffer();
|
||||
u32 socket_handle = cmd_buffer[1];
|
||||
|
|
|
@ -228,7 +228,7 @@ static ResultCode WaitSynchronizationN(s32* out, Handle* handles, s32 handle_cou
|
|||
// Actually wait the current thread on each object if we decided to wait...
|
||||
std::vector<SharedPtr<Kernel::WaitObject>> wait_objects;
|
||||
wait_objects.reserve(handle_count);
|
||||
|
||||
|
||||
for (int i = 0; i < handle_count; ++i) {
|
||||
auto object = Kernel::g_handle_table.GetWaitObject(handles[i]);
|
||||
object->AddWaitingThread(Kernel::GetCurrentThread());
|
||||
|
@ -475,7 +475,7 @@ static ResultCode GetProcessIdOfThread(u32* process_id, Handle thread_handle) {
|
|||
return ERR_INVALID_HANDLE;
|
||||
|
||||
const SharedPtr<Kernel::Process> process = thread->owner_process;
|
||||
|
||||
|
||||
ASSERT_MSG(process != nullptr, "Invalid parent process for thread=0x%08X", thread_handle);
|
||||
|
||||
*process_id = process->process_id;
|
||||
|
|
|
@ -140,7 +140,7 @@ inline void Write(u32 addr, const T data) {
|
|||
// Raw copies do not perform color conversion nor tiled->linear / linear->tiled conversions
|
||||
// TODO(Subv): Verify if raw copies perform scaling
|
||||
memcpy(dst_pointer, src_pointer, output_size);
|
||||
|
||||
|
||||
LOG_TRACE(HW_GPU, "DisplayTriggerTransfer: 0x%08x bytes from 0x%08x(%ux%u)-> 0x%08x(%ux%u), output format: %x, flags 0x%08X, Raw copy",
|
||||
output_size,
|
||||
config.GetPhysicalInputAddress(), config.input_width.Value(), config.input_height.Value(),
|
||||
|
@ -159,14 +159,14 @@ inline void Write(u32 addr, const T data) {
|
|||
for (u32 x = 0; x < output_width; ++x) {
|
||||
Math::Vec4<u8> src_color = { 0, 0, 0, 0 };
|
||||
|
||||
// Calculate the [x,y] position of the input image
|
||||
// Calculate the [x,y] position of the input image
|
||||
// based on the current output position and the scale
|
||||
u32 input_x = x * horizontal_scale;
|
||||
u32 input_y = y * vertical_scale;
|
||||
|
||||
if (config.flip_vertically) {
|
||||
// Flip the y value of the output data,
|
||||
// we do this after calculating the [x,y] position of the input image
|
||||
// Flip the y value of the output data,
|
||||
// we do this after calculating the [x,y] position of the input image
|
||||
// to account for the scaling options.
|
||||
y = output_height - y - 1;
|
||||
}
|
||||
|
@ -302,7 +302,7 @@ static void VBlankCallback(u64 userdata, int cycles_late) {
|
|||
// - If frameskip == 0 (disabled), always swap buffers
|
||||
// - If frameskip == 1, swap buffers every other frame (starting from the first frame)
|
||||
// - If frameskip > 1, swap buffers every frameskip^n frames (starting from the second frame)
|
||||
if ((((Settings::values.frame_skip != 1) ^ last_skip_frame) && last_skip_frame != g_skip_frame) ||
|
||||
if ((((Settings::values.frame_skip != 1) ^ last_skip_frame) && last_skip_frame != g_skip_frame) ||
|
||||
Settings::values.frame_skip == 0) {
|
||||
VideoCore::g_renderer->SwapBuffers();
|
||||
}
|
||||
|
|
|
@ -66,5 +66,5 @@ void Init() {
|
|||
void Shutdown() {
|
||||
LOG_DEBUG(HW_LCD, "shutdown OK");
|
||||
}
|
||||
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -85,5 +85,5 @@ void Init();
|
|||
|
||||
/// Shutdown hardware
|
||||
void Shutdown();
|
||||
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -234,7 +234,7 @@ ResultStatus AppLoader_THREEDSX::Load() {
|
|||
Kernel::g_current_process = Kernel::Process::Create(filename, 0);
|
||||
Kernel::g_current_process->svc_access_mask.set();
|
||||
Kernel::g_current_process->address_mappings = default_address_mappings;
|
||||
|
||||
|
||||
// Attach the default resource limit (APPLICATION) to the process
|
||||
Kernel::g_current_process->resource_limit = Kernel::ResourceLimit::GetForCategory(Kernel::ResourceLimitCategory::APPLICATION);
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ enum : VAddr {
|
|||
SHARED_PAGE_VADDR_END = SHARED_PAGE_VADDR + SHARED_PAGE_SIZE,
|
||||
|
||||
// TODO(yuriks): The size of this area is dynamic, the kernel grows
|
||||
// it as more and more threads are created. For now we'll just use a
|
||||
// it as more and more threads are created. For now we'll just use a
|
||||
// hardcoded value.
|
||||
/// Area where TLS (Thread-Local Storage) buffers are allocated.
|
||||
TLS_AREA_VADDR = 0x1FF82000,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue