Manage big endian/little endian

This commit is contained in:
Laurent Vivier 2006-05-29 20:18:19 +00:00
parent de2860a35c
commit 7cf0906477
12 changed files with 41 additions and 24 deletions

View File

@ -9,6 +9,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_get_bootinfo(emile_map_t *map, int* bootstart, int *bootsize,
int *bootaddr, int *bootentry, int* checksum,
@ -17,11 +18,11 @@ int emile_map_get_bootinfo(emile_map_t *map, int* bootstart, int *bootsize,
if (!emile_map_is_valid(map))
return -1;
*bootstart = map->partition.LgBootStart;
*bootsize = map->partition.BootSize;
*bootaddr = map->partition.BootAddr;
*bootentry = map->partition.BootEntry;
*checksum = map->partition.BootCksum;
*bootstart = read_long(&map->partition.LgBootStart);
*bootsize = read_long(&map->partition.BootSize);
*bootaddr = read_long(&map->partition.BootAddr);
*bootentry = read_long(&map->partition.BootEntry);
*checksum = read_long(&map->partition.BootCksum);
strcpy(processor, map->partition.Processor);
return 0;

View File

@ -10,8 +10,9 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_get_number(emile_map_t *map)
{
return map->partition.MapBlkCnt;
return read_long(&map->partition.MapBlkCnt);
}

View File

@ -7,8 +7,9 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_partition_get_flags(emile_map_t *map)
{
return map->partition.PartStatus;
return read_long(&map->partition.PartStatus);
}

View File

@ -10,5 +10,6 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
int emile_map_partition_is_bootable(emile_map_t *map)
{
return (map->partition.PartStatus & kPartitionAUXIsBootValid) == kPartitionAUXIsBootValid;
return (emile_map_partition_get_flags(map) &
kPartitionAUXIsBootValid) == kPartitionAUXIsBootValid;
}

View File

@ -10,5 +10,6 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
int emile_map_partition_is_startup(emile_map_t *map)
{
return (map->partition.PartStatus & kPartitionIsStartup) == kPartitionIsStartup;
return (emile_map_partition_get_flags(map)
& kPartitionIsStartup) == kPartitionIsStartup;
}

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_partition_set_bootable(emile_map_t *map, int enable)
{
@ -14,9 +15,13 @@ int emile_map_partition_set_bootable(emile_map_t *map, int enable)
return -1;
if (enable)
map->partition.PartStatus = kPartitionAUXIsValid | kPartitionAUXIsAllocated | kPartitionAUXIsInUse | kPartitionAUXIsReadable | kPartitionAUXIsWriteable | kPartitionIsMountedAtStartup | 0x80;
emile_map_partition_set_flags(map,
kPartitionAUXIsValid | kPartitionAUXIsAllocated |
kPartitionAUXIsInUse | kPartitionAUXIsReadable |
kPartitionAUXIsWriteable | kPartitionIsMountedAtStartup | 0x80);
else
map->partition.PartStatus &= ~kPartitionIsMountedAtStartup;
emile_map_partition_set_flags(&map,
emile_map_partition_get_flags(map) & ~kPartitionIsMountedAtStartup);
return 0;
}

View File

@ -7,10 +7,11 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_partition_set_flags(emile_map_t *map, int flags)
{
map->partition.PartStatus = flags;
write_long(&map->partition.PartStatus, flags);
return 0;
}

View File

@ -14,9 +14,11 @@ int emile_map_partition_set_startup(emile_map_t *map, int enable)
return -1;
if (enable)
map->partition.PartStatus |= kPartitionIsStartup;
emile_map_partition_set_flags(map,
emile_map_partition_get_flags(map) | kPartitionIsStartup);
else
map->partition.PartStatus &= ~kPartitionIsStartup;
emile_map_partition_set_flags(map,
emile_map_partition_get_flags(map) & ~kPartitionIsStartup);
return 0;
}

View File

@ -10,6 +10,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_read(emile_map_t *map, int part)
{
@ -19,7 +20,7 @@ int emile_map_read(emile_map_t *map, int part)
if (map->current == part)
return part;
if (part > map->partition.MapBlkCnt)
if (part > read_long(&map->partition.MapBlkCnt))
return -1;
offset = part * sizeof(struct Partition) + sizeof(struct DriverDescriptor);

View File

@ -9,6 +9,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_set_bootinfo(emile_map_t *map, int bootstart, int bootsize,
int bootaddr, int bootentry, int checksum,
@ -17,11 +18,11 @@ int emile_map_set_bootinfo(emile_map_t *map, int bootstart, int bootsize,
if (!emile_map_is_valid(map))
return -1;
map->partition.LgBootStart = bootstart;
map->partition.BootSize = bootsize;
map->partition.BootAddr = bootaddr;
map->partition.BootEntry = bootentry;
map->partition.BootCksum = checksum;
write_long(&map->partition.LgBootStart, bootstart);
write_long(&map->partition.BootSize, bootsize);
write_long(&map->partition.BootAddr, bootaddr);
write_long(&map->partition.BootEntry, bootentry);
write_long(&map->partition.BootCksum, checksum);
memset(map->partition.Processor, 0, sizeof(map->partition.Processor));
strcpy(map->partition.Processor, processor);

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_set_driver_info(emile_map_t *map, int number,
int block, int size, int type)
@ -17,9 +18,9 @@ int emile_map_set_driver_info(emile_map_t *map, int number,
if (number >= DD_MAX_DRIVER)
return -1;
map->drivers.DrvInfo[number].Block = block;
map->drivers.DrvInfo[number].Size = size;
map->drivers.DrvInfo[number].Type = type;
write_long(&map->drivers.DrvInfo[number].Block, block);
write_short(&map->drivers.DrvInfo[number].Size, size);
write_short(&map->drivers.DrvInfo[number].Type, type);
return 0;
}

View File

@ -7,6 +7,7 @@ static __attribute__((used)) char* rcsid = "$CVSHeader$";
#include "partition.h"
#include "libemile.h"
#include "emile.h"
int emile_map_set_driver_number(emile_map_t *map, int number)
{
@ -16,7 +17,7 @@ int emile_map_set_driver_number(emile_map_t *map, int number)
if (number >= DD_MAX_DRIVER)
return -1;
map->drivers.DrvrCount = number;
write_short(&map->drivers.DrvrCount, number);
return 0;
}