diff -u /opt/medion/trunk/sysapps/u-boot-1.1.2/include/part.h u-boot-1.1.2-plxnas/include/part.h
--- /opt/medion/trunk/sysapps/u-boot-1.1.2/include/part.h	2010-08-30 13:19:09.000000000 +0200
+++ u-boot-1.1.2-plxnas/include/part.h	2011-12-23 12:10:27.999087814 +0100
@@ -41,8 +41,8 @@
 	unsigned char	product[20+1];	/* IDE Serial no, SCSI product */
 	unsigned char	revision[8+1];	/* firmware revision */
 	unsigned long	(*block_read)(int dev,
-				      unsigned long start,
-				      lbaint_t blkcnt,
+				      lbaint_t start,
+				      unsigned long blkcnt,
 				      unsigned long *buffer);
 }block_dev_desc_t;
 
@@ -76,8 +76,8 @@
 #define DEV_TYPE_OPDISK		0x07	/* optical disk */
 
 typedef struct disk_partition {
-	ulong	start;		/* # of first block in partition	*/
-	ulong	size;		/* number of blocks in partition	*/
+    lbaint_t start;		/* # of first block in partition	*/
+    lbaint_t size;		/* number of blocks in partition	*/
 	ulong	blksz;		/* block size in bytes			*/
 	uchar	name[32];	/* partition name			*/
 	uchar	type[32];	/* string type description		*/
diff -u /opt/medion/trunk/sysapps/u-boot-1.1.2/disk/part_dos.c u-boot-1.1.2-plxnas/disk/part_dos.c
--- /opt/medion/trunk/sysapps/u-boot-1.1.2/disk/part_dos.c	2010-08-30 13:19:09.000000000 +0200
+++ u-boot-1.1.2-plxnas/disk/part_dos.c	2011-12-23 19:25:52.418821604 +0100
@@ -51,6 +51,15 @@
 	   );
 }
 
+static inline unsigned int le32_to_uint(unsigned char *le32)
+{
+    return ((le32[3] << 24) +
+        (le32[2] << 16) +
+        (le32[1] << 8) +
+         le32[0]
+       );
+}
+
 static inline int is_extended(int part_type)
 {
     return (part_type == 0x5 ||
@@ -58,12 +67,12 @@
 	    part_type == 0x85);
 }
 
-static void print_one_part (dos_partition_t *p, int ext_part_sector, int part_num)
+static void print_one_part (dos_partition_t *p, lbaint_t ext_part_sector, int part_num)
 {
-	int lba_start = ext_part_sector + le32_to_int (p->start4);
-	int lba_size  = le32_to_int (p->size4);
+	lbaint_t lba_start = ext_part_sector + le32_to_uint (p->start4);
+	lbaint_t lba_size  = le32_to_uint (p->size4);
 
-	printf ("%5d\t\t%10d\t%10d\t%2x%s\n",
+	printf ("%5d\t\t%10qd\t%10qd\t%2x%s\n",
 		part_num, lba_start, lba_size, p->sys_ind,
 		(is_extended (p->sys_ind) ? " Extd" : ""));
 }
@@ -94,7 +103,7 @@
 
 /*  Print a partition that is relative to its Extended partition table
  */
-static void print_partition_extended (block_dev_desc_t *dev_desc, int ext_part_sector, int relative,
+static void print_partition_extended (block_dev_desc_t *dev_desc, lbaint_t ext_part_sector, int relative,
 							   int part_num)
 {
 	unsigned char buffer[DEFAULT_SECTOR_SIZE];
@@ -142,7 +151,7 @@
 	pt = (dos_partition_t *) (buffer + DOS_PART_TBL_OFFSET);
 	for (i = 0; i < 4; i++, pt++) {
 		if (is_extended (pt->sys_ind)) {
-			int lba_start = le32_to_int (pt->start4) + relative;
+			lbaint_t lba_start = le32_to_uint (pt->start4) + relative;
 
 			print_partition_extended (dev_desc, lba_start,
 						  ext_part_sector == 0  ? lba_start
@@ -157,7 +166,7 @@
 
 /*  Print a partition that is relative to its Extended partition table
  */
-static int get_partition_info_extended (block_dev_desc_t *dev_desc, int ext_part_sector,
+static int get_partition_info_extended (block_dev_desc_t *dev_desc, lbaint_t ext_part_sector,
 				 int relative, int part_num,
 				 int which_part, disk_partition_t *info)
 {
@@ -189,8 +198,8 @@
 		    (part_num == which_part) &&
 		    (is_extended(pt->sys_ind) == 0)) {
 			info->blksz = 512;
-			info->start = ext_part_sector + le32_to_int (pt->start4);
-			info->size  = le32_to_int (pt->size4);
+			info->start = ext_part_sector + le32_to_uint (pt->start4);
+			info->size  = le32_to_uint (pt->size4);
 			switch(dev_desc->if_type) {
 				case IF_TYPE_IDE:
 				case IF_TYPE_ATAPI:
@@ -225,7 +234,7 @@
 	pt = (dos_partition_t *) (buffer + DOS_PART_TBL_OFFSET);
 	for (i = 0; i < 4; i++, pt++) {
 		if (is_extended (pt->sys_ind)) {
-			int lba_start = le32_to_int (pt->start4) + relative;
+			lbaint_t lba_start = le32_to_uint (pt->start4) + relative;
 
 			return get_partition_info_extended (dev_desc, lba_start,
 				 ext_part_sector == 0 ? lba_start : relative,
diff -u /opt/medion/trunk/sysapps/u-boot-1.1.2/common/cmd_ide.c u-boot-1.1.2-plxnas/common/cmd_ide.c
--- /opt/medion/trunk/sysapps/u-boot-1.1.2/common/cmd_ide.c	2010-08-30 13:19:09.000000000 +0200
+++ u-boot-1.1.2-plxnas/common/cmd_ide.c	2011-12-23 13:16:57.428712980 +0100
@@ -1214,7 +1214,7 @@
 #ifdef CONFIG_LBA48
 	unsigned char lba48 = 0;
 
-	if (blknr & ((uint64_t)0x0000fffff0000000) ) {
+	if (blknr & (((uint64_t)0x0000fffff) << 28) ) {
 		/* more than 28 bits used, use 48bit mode */
 		lba48 = 1;
 	}
@@ -1333,7 +1333,7 @@
 #ifdef CONFIG_LBA48
 	unsigned char lba48 = 0;
 
-	if (blknr & 0x0000fffff0000000) {
+	if (blknr & (((uint64_t)0x0000fffff) << 28)) {
 		/* more than 28 bits used, use 48bit mode */
 		lba48 = 1;
 	}
diff -u /opt/medion/trunk/sysapps/u-boot-1.1.2/common/cmd_scsi.c u-boot-1.1.2-plxnas/common/cmd_scsi.c
--- /opt/medion/trunk/sysapps/u-boot-1.1.2/common/cmd_scsi.c	2010-08-30 13:19:09.000000000 +0200
+++ u-boot-1.1.2-plxnas/common/cmd_scsi.c	2011-12-23 12:11:29.259082059 +0100
@@ -79,7 +79,7 @@
 void scsi_ident_cpy (unsigned char *dest, unsigned char *src, unsigned int len);
 
 
-ulong scsi_read(int device, ulong blknr, ulong blkcnt, ulong *buffer);
+ulong scsi_read(int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
 
 
 /*********************************************************************************
@@ -422,7 +422,7 @@
 
 #define SCSI_MAX_READ_BLK 0xFFFF /* almost the maximum amount of the scsi_ext command.. */
 
-ulong scsi_read(int device, ulong blknr, ulong blkcnt, ulong *buffer)
+ulong scsi_read(int device, lbaint_t blknr, ulong blkcnt, ulong *buffer)
 {
 	ulong start,blks, buf_addr;
 	unsigned short smallblks;
diff -u /opt/medion/trunk/sysapps/u-boot-1.1.2/common/usb_storage.c u-boot-1.1.2-plxnas/common/usb_storage.c
--- /opt/medion/trunk/sysapps/u-boot-1.1.2/common/usb_storage.c	2010-08-30 13:19:09.000000000 +0200
+++ u-boot-1.1.2-plxnas/common/usb_storage.c	2011-12-23 12:15:16.795727347 +0100
@@ -161,7 +161,7 @@
 
 int usb_stor_get_info(struct usb_device *dev, struct us_data *us, block_dev_desc_t *dev_desc);
 int usb_storage_probe(struct usb_device *dev, unsigned int ifnum,struct us_data *ss);
-unsigned long usb_stor_read(int device, unsigned long blknr, unsigned long blkcnt, unsigned long *buffer);
+unsigned long usb_stor_read(int device, lbaint_t blknr, unsigned long blkcnt, unsigned long *buffer);
 struct usb_device * usb_get_dev_index(int index);
 void uhci_show_temp_int_td(void);
 
@@ -893,7 +893,7 @@
 
 #define USB_MAX_READ_BLK 20
 
-unsigned long usb_stor_read(int device, unsigned long blknr, unsigned long blkcnt, unsigned long *buffer)
+unsigned long usb_stor_read(int device, lbaint_t blknr, unsigned long blkcnt, unsigned long *buffer)
 {
 	unsigned long start,blks, buf_addr;
 	unsigned short smallblks;
