Просмотр исходного кода

hle/ipc_helpers: Allow pushing signed values

This is kind of a large hole in the API, given we allow popping signed
values. This fixes that.
Lioncash 7 лет назад
Родитель
Сommit
ac603cf130
1 измененных файлов с 22 добавлено и 0 удалено
  1. 22 0
      src/core/hle/ipc_helpers.h

+ 22 - 0
src/core/hle/ipc_helpers.h

@@ -216,6 +216,11 @@ private:
 
 /// Push ///
 
+template <>
+inline void ResponseBuilder::Push(s32 value) {
+    cmdbuf[index++] = static_cast<u32>(value);
+}
+
 template <>
 inline void ResponseBuilder::Push(u32 value) {
     cmdbuf[index++] = value;
@@ -234,11 +239,28 @@ inline void ResponseBuilder::Push(ResultCode value) {
     Push<u32>(0);
 }
 
+template <>
+inline void ResponseBuilder::Push(s8 value) {
+    PushRaw(value);
+}
+
+template <>
+inline void ResponseBuilder::Push(s16 value) {
+    PushRaw(value);
+}
+
+template <>
+inline void ResponseBuilder::Push(s64 value) {
+    Push(static_cast<u32>(value));
+    Push(static_cast<u32>(value >> 32));
+}
+
 template <>
 inline void ResponseBuilder::Push(u8 value) {
     PushRaw(value);
 }
 
+
 template <>
 inline void ResponseBuilder::Push(u16 value) {
     PushRaw(value);