diff --git a/src/core/buffer.c b/src/core/buffer.c index 47eb7b7f..48588b6e 100644 --- a/src/core/buffer.c +++ b/src/core/buffer.c @@ -32,15 +32,12 @@ * Initialise a buffer * */ -void init_buffer ( struct buffer *buffer, physaddr_t start, size_t len ) { - buffer->start = start; - buffer->end = start + len; - buffer->fill = 0; +void init_buffer ( struct buffer *buffer ) { + char tail = 1; - if ( len ) { - char tail = 1; - copy_to_phys ( start, &tail, sizeof ( tail ) ); - } + buffer->fill = 0; + if ( buffer->end != buffer->start ) + copy_to_phys ( buffer->start, &tail, sizeof ( tail ) ); DBG ( "BUFFER [%x,%x) initialised\n", buffer->start, buffer->end ); } diff --git a/src/include/buffer.h b/src/include/buffer.h index b0de39df..a22b00dd 100644 --- a/src/include/buffer.h +++ b/src/include/buffer.h @@ -33,10 +33,12 @@ struct buffer_free_block { physaddr_t end; } __attribute__ (( packed )); +/* This must be provided by the architecture-dependent load_buffer.c */ +extern struct buffer load_buffer; + /* Functions in buffer.c */ -extern void init_buffer ( struct buffer *buffer, physaddr_t start, - size_t len ); +extern void init_buffer ( struct buffer *buffer ); extern int fill_buffer ( struct buffer *buffer, void *data, off_t offset, size_t len );