#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
+/* This struct is here for syntactic coherency, it is not used */
-+#define __MODULE_INFO_DISABLED(name) \
++#define __MODULE_INFO_DISABLED(name) \
+ struct __UNIQUE_ID(name) {}
+
+#ifdef CONFIG_MODULE_STRIPPED
---
--- a/arch/mips/include/asm/r4kcache.h
+++ b/arch/mips/include/asm/r4kcache.h
-@@ -534,7 +534,7 @@ static inline void extra##blast_##pfx##c
- unsigned long end = start + current_cpu_data.desc.waysize; \
- unsigned long ws_inc = 1UL << current_cpu_data.desc.waybit; \
- unsigned long ws_end = current_cpu_data.desc.ways << \
-- current_cpu_data.desc.waybit; \
-+ current_cpu_data.desc.waybit; \
- unsigned long ws, addr; \
- \
- for (ws = 0; ws < ws_end; ws += ws_inc) \
-@@ -560,7 +560,7 @@ static inline void extra##blast_##pfx##c
- unsigned long end = start + PAGE_SIZE; \
- unsigned long ws_inc = 1UL << current_cpu_data.desc.waybit; \
- unsigned long ws_end = current_cpu_data.desc.ways << \
-- current_cpu_data.desc.waybit; \
-+ current_cpu_data.desc.waybit; \
- unsigned long ws, addr; \
- \
- for (ws = 0; ws < ws_end; ws += ws_inc) \
-@@ -596,7 +596,7 @@ static inline void blast_##pfx##cache##l
- unsigned long end = page + PAGE_SIZE; \
- \
- do { \
-- cache##lsize##_unroll32_user(start, hitop); \
-+ cache##lsize##_unroll32_user(start, hitop); \
- start += lsize * 32; \
- } while (start < end); \
- }
@@ -617,14 +617,46 @@ static inline void prot##extra##blast_##
unsigned long end) \
{ \
- unsigned long aend = (end - 1) & ~(lsize - 1); \
+ unsigned long aend = (end + lsize - 1) & ~(lsize - 1); \
+ int lines = (aend - addr) / lsize; \
-+ \
+ \
+- while (1) { \
+ while (lines >= 8) { \
+ prot##cache_op(hitop, addr); \
+ prot##cache_op(hitop, addr + lsize); \
+ prot##cache_op(hitop, addr + lsize); \
+ addr += lsize_2; \
+ } \
- \
-- while (1) { \
++ \
+ if (lines & 0x1) { \
prot##cache_op(hitop, addr); \
- if (addr == aend) \
} \
}
-@@ -656,7 +688,7 @@ static inline void protected_blast_##pfx
- if (addr == aend) \
- break; \
- addr += lsize; \
-- } \
-+ } \
- \
- } \
- }
-@@ -683,7 +715,7 @@ static inline void blast_##pfx##cache##l
- unsigned long end = start + current_cpu_data.desc.waysize; \
- unsigned long ws_inc = 1UL << current_cpu_data.desc.waybit; \
- unsigned long ws_end = current_cpu_data.desc.ways << \
-- current_cpu_data.desc.waybit; \
-+ current_cpu_data.desc.waybit; \
- unsigned long ws, addr; \
- \
- for (ws = 0; ws < ws_end; ws += ws_inc) \
return 0;
--- a/fs/proc/Kconfig
+++ b/fs/proc/Kconfig
-@@ -81,10 +81,10 @@ config PROC_SYSCTL
- limited in memory.
-
- config PROC_PAGE_MONITOR
-- default y
-+ default y
- depends on PROC_FS && MMU
- bool "Enable /proc page monitoring" if EXPERT
-- help
-+ help
- Various /proc files exist to monitor process memory utilization:
- /proc/pid/smaps, /proc/pid/clear_refs, /proc/pid/pagemap,
- /proc/kpagecount, and /proc/kpageflags. Disabling these
@@ -100,6 +100,11 @@ config PROC_CHILDREN
Say Y if you are running any user-space software which takes benefit from
this interface. For example, rkt is such a piece of software.
/*
* Given a pointer to the MTD object in the mtd_part structure, we can retrieve
* the pointer to that structure.
-@@ -612,6 +616,8 @@ int mtd_add_partition(struct mtd_info *p
+@@ -612,6 +616,7 @@ int mtd_add_partition(struct mtd_info *p
if (ret)
goto err_remove_part;
+ mtd_partition_split(parent, new);
-+
mtd_add_partition_attrs(new);
return 0;
-@@ -698,6 +704,29 @@ int mtd_del_partition(struct mtd_info *m
+@@ -698,6 +703,29 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
-@@ -738,6 +767,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -738,6 +766,7 @@ int add_mtd_partitions(struct mtd_info *
goto err_del_partitions;
}
/*
* Given a pointer to the MTD object in the mtd_part structure, we can retrieve
-@@ -704,6 +708,36 @@ int mtd_del_partition(struct mtd_info *m
+@@ -703,6 +707,36 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
#define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME
#else
-@@ -1053,6 +1087,61 @@ void mtd_part_parser_cleanup(struct mtd_
+@@ -1052,6 +1086,61 @@ void mtd_part_parser_cleanup(struct mtd_
}
}
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
-@@ -746,6 +746,7 @@ run_parsers_by_type(struct mtd_part *sla
+@@ -745,6 +745,7 @@ run_parsers_by_type(struct mtd_part *sla
static void split_firmware(struct mtd_info *master, struct mtd_part *part)
{
}
static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
-@@ -755,6 +756,12 @@ static void mtd_partition_split(struct m
+@@ -754,6 +755,12 @@ static void mtd_partition_split(struct m
if (rootfs_found)
return;
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
-@@ -1166,6 +1166,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -1165,6 +1165,24 @@ int mtd_is_partition(const struct mtd_in
}
EXPORT_SYMBOL_GPL(mtd_is_partition);
+ ---help---
+ MyLoader is a bootloader which allows the user to define partitions
+ in flash devices, by putting a table in the second erase block
-+ on the device, similar to a partition table. This table gives the
++ on the device, similar to a partition table. This table gives the
+ offsets and lengths of the user defined partitions.
+
+ If you need code which can detect and parse these tables, and