aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2018-12-19 21:43:10 -0500
committerLioncash <mathew1800@gmail.com>2018-12-21 07:05:34 -0500
commit10824c5d635be0bdfb79f4b3af8c9481034b437f (patch)
tree3fafb8ccaccb180d3ff3f9e4800babc4c02665b2 /src
parente0e84aede01763f219c4ac4fc0c9c5034dd2656b (diff)
kernel/process_capability: Handle handle table capability flags
This just specifies the handle table size. There's also a section of reserved bits that are checked against.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/process_capability.cpp7
-rw-r--r--src/core/hle/kernel/process_capability.h5
2 files changed, 11 insertions, 1 deletions
diff --git a/src/core/hle/kernel/process_capability.cpp b/src/core/hle/kernel/process_capability.cpp
index fb4467793d..7ee0ad9cc3 100644
--- a/src/core/hle/kernel/process_capability.cpp
+++ b/src/core/hle/kernel/process_capability.cpp
@@ -332,7 +332,12 @@ ResultCode ProcessCapabilities::HandleKernelVersionFlags(u32 flags) {
}
ResultCode ProcessCapabilities::HandleHandleTableFlags(u32 flags) {
- // TODO: Implement
+ const u32 reserved = flags >> 26;
+ if (reserved != 0) {
+ return ERR_RESERVED_VALUE;
+ }
+
+ handle_table_size = (flags >> 16) & 0x3FF;
return RESULT_SUCCESS;
}
diff --git a/src/core/hle/kernel/process_capability.h b/src/core/hle/kernel/process_capability.h
index 9a7da8bfa7..7b9f24d518 100644
--- a/src/core/hle/kernel/process_capability.h
+++ b/src/core/hle/kernel/process_capability.h
@@ -155,6 +155,11 @@ public:
return program_type;
}
+ /// Gets the number of total allowable handles for the process' handle table.
+ u32 GetHandleTableSize() const {
+ return handle_table_size;
+ }
+
/// Gets the kernel version value.
u32 GetKernelVersion() const {
return kernel_version;