wok annotate gpxe/stuff/default_boot.u @ rev 962

gpxe: add forced_url
author Pascal Bellard <pascal.bellard@slitaz.org>
date Sun Jun 29 22:43:02 2008 +0000 (2008-06-29)
parents a9ff8c135e36
children da7eea2e2d10
rev   line source
pascal@962 1 --- gpxe-0.9.3/src/arch/i386/prefix/lkrnprefix.S
pascal@962 2 +++ gpxe-0.9.3/src/arch/i386/prefix/lkrnprefix.S
pascal@962 3 @@ -441,6 +441,8 @@
pascal@962 4 /* Calculated lcall to _start with %cs:0000 = image start */
pascal@962 5 lret
pascal@962 6
pascal@962 7 +boot_url:
pascal@962 8 + .space 128, 0
pascal@962 9
pascal@962 10 .org PREFIXSIZE
pascal@962 11 /*
pascal@962 12 @@ -453,6 +455,13 @@
pascal@962 13 movw %bx, %ss
pascal@962 14 movw $_estack16, %sp
pascal@962 15
pascal@962 16 + /* Copy our boot_url structure to the forced_url variable */
pascal@962 17 + movw %bx, %es
pascal@962 18 + movw $forced_url, %di
pascal@962 19 + movw $boot_url, %si
pascal@962 20 + movw $128, %cx
pascal@962 21 + rep movsb
pascal@962 22 +
pascal@962 23 /* Jump to .text16 segment */
pascal@962 24 pushw %ax
pascal@962 25 pushw $1f
pascal@962 26
pascal@962 27 --- gpxe-0.9.3/src/arch/i386/prefix/pxeprefix.S
pascal@962 28 +++ gpxe-0.9.3/src/arch/i386/prefix/pxeprefix.S
pascal@962 29 @@ -19,6 +19,8 @@
pascal@962 30 .section ".prefix"
pascal@962 31 /* Set up our non-stack segment registers */
pascal@962 32 jmp $0x7c0, $1f
pascal@962 33 +boot_url:
pascal@962 34 + .space 128, 0
pascal@962 35 1: movw %cs, %ax
pascal@962 36 movw %ax, %ds
pascal@962 37 movw $0x40, %ax /* BIOS data segment access */
pascal@962 38 @@ -703,16 +705,22 @@
pascal@962 39 /* Set up real-mode stack */
pascal@962 40 movw %bx, %ss
pascal@962 41 movw $_estack16, %sp
pascal@962 42 -
pascal@962 43 + movw %bx, %es
pascal@962 44 +
pascal@962 45 #ifdef PXELOADER_KEEP_UNDI
pascal@962 46 /* Copy our undi_device structure to the preloaded_undi variable */
pascal@962 47 - movw %bx, %es
pascal@962 48 movw $preloaded_undi, %di
pascal@962 49 movw $undi_device, %si
pascal@962 50 movw $undi_device_size, %cx
pascal@962 51 rep movsb
pascal@962 52 #endif
pascal@962 53
pascal@962 54 + /* Copy our boot_url structure to the forced_url variable */
pascal@962 55 + movw $forced_url, %di
pascal@962 56 + movw $boot_url, %si
pascal@962 57 + movw $128, %cx
pascal@962 58 + rep movsb
pascal@962 59 +
pascal@962 60 /* Jump to .text16 segment with %ds pointing to .data16 */
pascal@962 61 movw %bx, %ds
pascal@962 62 pushw %ax
pascal@962 63
pascal@955 64 --- gpxe-0.9.3/src/usr/autoboot.c
pascal@955 65 +++ gpxe-0.9.3/src/usr/autoboot.c
pascal@962 66 @@ -120,6 +120,11 @@
pascal@962 67 return -ENOTSUP;
pascal@962 68 }
pascal@962 69
pascal@962 70 +struct _forced_url {
pascal@962 71 + char url[128];
pascal@962 72 +};
pascal@962 73 +struct _forced_url __data16 ( forced_url );
pascal@962 74 +#define forced_url __use_data16 ( forced_url )
pascal@962 75 /**
pascal@962 76 * Boot from a network device
pascal@962 77 *
pascal@962 78 @@ -139,15 +144,21 @@
pascal@962 79 if ( ( rc = dhcp ( netdev ) ) != 0 )
pascal@962 80 return rc;
pascal@962 81 route();
pascal@962 82 -
pascal@962 83 +
pascal@962 84 /* Try to boot an embedded image if we have one */
pascal@962 85 rc = boot_embedded_image ();
pascal@962 86 if ( rc != ENOENT )
pascal@962 87 return rc;
pascal@962 88
pascal@962 89 + /* Try to boot a forced url if we have one */
pascal@962 90 + strcpy ( buf, forced_url.url );
pascal@962 91 + if ( forced_url.url[0] == 0 ) {
pascal@962 92 +
pascal@962 93 /* Try to download and boot whatever we are given as a filename */
pascal@962 94 dhcp_snprintf ( buf, sizeof ( buf ),
pascal@955 95 find_global_dhcp_option ( DHCP_BOOTFILE_NAME ) );
pascal@962 96 + }
pascal@962 97 + while (1) {
pascal@955 98 if ( buf[0] ) {
pascal@962 99 printf ( "Booting from filename \"%s\"\n", buf );
pascal@962 100 return boot_filename ( buf );
pascal@962 101 @@ -162,7 +173,8 @@
pascal@962 102 }
pascal@962 103
pascal@955 104 printf ( "No filename or root path specified\n" );
pascal@955 105 - return -ENOENT;
pascal@955 106 + strcpy ( buf, "http://boot.slitaz.org/gpxe" );
pascal@962 107 + }
pascal@955 108 }
pascal@962 109
pascal@962 110 /**