|
@@ -1058,6 +1058,80 @@ static int write_node(u64 n1, u64 n2, u64 n3, u64 n4, u64 v1, u64 v2)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+int ps3_repository_write_highmem_region_count(unsigned int region_count)
|
|
|
+{
|
|
|
+ int result;
|
|
|
+ u64 v1 = (u64)region_count;
|
|
|
+
|
|
|
+ result = write_node(
|
|
|
+ make_first_field("highmem", 0),
|
|
|
+ make_field("region", 0),
|
|
|
+ make_field("count", 0),
|
|
|
+ 0,
|
|
|
+ v1, 0);
|
|
|
+ return result;
|
|
|
+}
|
|
|
+
|
|
|
+int ps3_repository_write_highmem_base(unsigned int region_index,
|
|
|
+ u64 highmem_base)
|
|
|
+{
|
|
|
+ return write_node(
|
|
|
+ make_first_field("highmem", 0),
|
|
|
+ make_field("region", region_index),
|
|
|
+ make_field("base", 0),
|
|
|
+ 0,
|
|
|
+ highmem_base, 0);
|
|
|
+}
|
|
|
+
|
|
|
+int ps3_repository_write_highmem_size(unsigned int region_index,
|
|
|
+ u64 highmem_size)
|
|
|
+{
|
|
|
+ return write_node(
|
|
|
+ make_first_field("highmem", 0),
|
|
|
+ make_field("region", region_index),
|
|
|
+ make_field("size", 0),
|
|
|
+ 0,
|
|
|
+ highmem_size, 0);
|
|
|
+}
|
|
|
+
|
|
|
+int ps3_repository_write_highmem_info(unsigned int region_index,
|
|
|
+ u64 highmem_base, u64 highmem_size)
|
|
|
+{
|
|
|
+ int result;
|
|
|
+
|
|
|
+ result = ps3_repository_write_highmem_base(region_index, highmem_base);
|
|
|
+ return result ? result
|
|
|
+ : ps3_repository_write_highmem_size(region_index, highmem_size);
|
|
|
+}
|
|
|
+
|
|
|
+static int ps3_repository_delete_highmem_base(unsigned int region_index)
|
|
|
+{
|
|
|
+ return delete_node(
|
|
|
+ make_first_field("highmem", 0),
|
|
|
+ make_field("region", region_index),
|
|
|
+ make_field("base", 0),
|
|
|
+ 0);
|
|
|
+}
|
|
|
+
|
|
|
+static int ps3_repository_delete_highmem_size(unsigned int region_index)
|
|
|
+{
|
|
|
+ return delete_node(
|
|
|
+ make_first_field("highmem", 0),
|
|
|
+ make_field("region", region_index),
|
|
|
+ make_field("size", 0),
|
|
|
+ 0);
|
|
|
+}
|
|
|
+
|
|
|
+int ps3_repository_delete_highmem_info(unsigned int region_index)
|
|
|
+{
|
|
|
+ int result;
|
|
|
+
|
|
|
+ result = ps3_repository_delete_highmem_base(region_index);
|
|
|
+ result += ps3_repository_delete_highmem_size(region_index);
|
|
|
+
|
|
|
+ return result ? -1 : 0;
|
|
|
+}
|
|
|
+
|
|
|
#endif /* defined(CONFIG_PS3_WRITE_REPOSITORY) */
|
|
|
|
|
|
#if defined(DEBUG)
|