|
|
1.1 ! root 1: /****************************************************************************** ! 2: * Copyright (c) 2004, 2011 IBM Corporation ! 3: * All rights reserved. ! 4: * This program and the accompanying materials ! 5: * are made available under the terms of the BSD License ! 6: * which accompanies this distribution, and is available at ! 7: * http://www.opensource.org/licenses/bsd-license.php ! 8: * ! 9: * Contributors: ! 10: * IBM Corporation - initial implementation ! 11: *****************************************************************************/ ! 12: ! 13: #include "netdriver_int.h" ! 14: ! 15: static void* memset( void *dest, int c, size_t n ) ! 16: { ! 17: while( n-- ) { ! 18: *( char * ) dest++ = ( char ) c; ! 19: } ! 20: return dest; ! 21: } ! 22: ! 23: extern char __bss_start; ! 24: extern char __bss_size; ! 25: ! 26: extern snk_module_t* veth_module_init(snk_kernel_t *snk_kernel_int, ! 27: vio_config_t *conf); ! 28: ! 29: snk_module_t* module_init(snk_kernel_t *snk_kernel_int, pci_config_t *pciconf) ! 30: { ! 31: char *bss = &__bss_start; ! 32: unsigned long long bss_size = (unsigned long long) &__bss_size; ! 33: vio_config_t *vioconf = (vio_config_t *)pciconf; ! 34: ! 35: if (((unsigned long long) bss) + bss_size >= 0xFF00000 ! 36: || bss_size >= 0x2000000) { ! 37: snk_kernel_int->print("BSS size (%llu bytes) is too big!\n", ! 38: bss_size); ! 39: return 0; ! 40: } ! 41: memset(bss, 0, bss_size); ! 42: ! 43: return veth_module_init(snk_kernel_int, vioconf); ! 44: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.